This project aims to enhance the current weather detection mechanism by developing an optimal prediction model along with necessary implementation techniques that can complement traditional forecast models. Rapidly changing weather conditions often go unnoticed by traditional forecasting methods, resulting in a lack of instantaneous information about these changes. By incorporating live pictures of weather patterns approaching specific regions, this model can capture and classify the upcoming weather swiftly. Thus, it provides valuable and timely information about the imminent weather changes, serving as a valuable enhancement to the existing weather detection approach.
from google.colab import drive
drive.mount('/content/drive')
%cd drive/My Drive
Mounted at /content/drive /content/drive/My Drive
#Import packages
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import load_img
import matplotlib.pyplot as plt
import re
import os
import pandas as pd
import numpy as np
import seaborn as sns
import random
from PIL import Image
from tqdm import tqdm
import matplotlib.pyplot as plt
import cv2
from skimage.feature import hog, canny
from skimage.filters import sobel
import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from matplotlib.patches import Patch
import matplotlib.pyplot as plt
from tensorflow.keras.applications import VGG16
from sklearn.preprocessing import LabelEncoder
from numpy import expand_dims
from tensorflow.keras.utils import plot_model
from IPython.display import Image
path="/content/drive/My Drive/weather"
cloudy=path+'/cloudy'
rain=path+'/rain'
shine=path+'/shine'
sunrise=path+'/sunrise'
df=pd.DataFrame()
df['pictures']=os.listdir(cloudy)+os.listdir(rain)+os.listdir(shine)+os.listdir(sunrise)
stored_label=[]
stored_paths=[]
for picture_name in df['pictures']:
label=re.match(r'([a-zA-Z]+)', picture_name).group()
stored_label.append(label)
stored_paths.append(path+'/'+label+'/'+picture_name)
df['label']=stored_label
df['path']=stored_paths
df.head()
| pictures | label | path | |
|---|---|---|---|
| 0 | cloudy103.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... |
| 1 | cloudy1.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... |
| 2 | cloudy101.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... |
| 3 | cloudy104.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... |
| 4 | cloudy10.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... |
df.isna().sum()
pictures 0 label 0 path 0 dtype: int64
plt.figure(figsize=(5,5))
class_cnt = df.groupby(['label']).size().reset_index(name = 'counts')
colors = sns.color_palette('Paired')[0:9]
plt.pie(class_cnt['counts'], labels=class_cnt['label'], colors=colors, autopct='%1.1f%%')
plt.legend(loc='right')
plt.show()
plot a representative from each category
plt.figure(figsize = (15,12))
for idx,m in enumerate(df.label.unique()):
plt.subplot(4,7,idx+1)
rep_df = df[df['label'] ==m].reset_index(drop = True)
image_path = rep_df.loc[random.randint(0, len(rep_df))-1,'path']
img = Image.open(image_path)
img = img.resize((224,224))
plt.imshow(img)
plt.axis('off')
plt.title(m)
plt.tight_layout()
plt.show()
widths,heights=[],[]
for path in tqdm(df['path']):
widths.append(Image.open(path).size[0])
heights.append(Image.open(path).size[1])
100%|██████████| 1125/1125 [07:45<00:00, 2.42it/s]
df['width']=widths
df['height']=heights
df
| pictures | label | path | width | height | |
|---|---|---|---|---|---|
| 0 | cloudy103.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... | 275 | 183 |
| 1 | cloudy1.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... | 600 | 400 |
| 2 | cloudy101.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... | 338 | 149 |
| 3 | cloudy104.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... | 275 | 183 |
| 4 | cloudy10.jpg | cloudy | /content/drive/My Drive/weather/cloudy/cloudy1... | 271 | 186 |
| ... | ... | ... | ... | ... | ... |
| 1120 | sunrise86.jpg | sunrise | /content/drive/My Drive/weather/sunrise/sunris... | 276 | 183 |
| 1121 | sunrise97.jpg | sunrise | /content/drive/My Drive/weather/sunrise/sunris... | 300 | 168 |
| 1122 | sunrise99.jpg | sunrise | /content/drive/My Drive/weather/sunrise/sunris... | 283 | 178 |
| 1123 | sunrise96.jpg | sunrise | /content/drive/My Drive/weather/sunrise/sunris... | 3008 | 2000 |
| 1124 | sunrise98.jpg | sunrise | /content/drive/My Drive/weather/sunrise/sunris... | 1024 | 576 |
1125 rows × 5 columns
df.describe()
| width | height | |
|---|---|---|
| count | 1125.000000 | 1125.000000 |
| mean | 506.335111 | 334.777778 |
| std | 539.274611 | 355.133806 |
| min | 158.000000 | 94.000000 |
| 25% | 259.000000 | 168.000000 |
| 50% | 284.000000 | 183.000000 |
| 75% | 600.000000 | 384.000000 |
| max | 4752.000000 | 3195.000000 |
plt.figure(figsize=(8, 6))
plt.hist([df['width'],df['height']], bins=10, label=['Width', 'Height'])
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Distribution of Height and Width')
plt.legend()
plt.show()
It appears that the majority of the images have width or height smaller than 1000
# Plotting the grouped histogram
unique_categories = df['label'].unique()
colors = sns.color_palette('husl', n_colors=len(unique_categories))
sns.set_palette(colors)
plt.figure(figsize=(8, 6))
sns.histplot(data=df, x='height', hue='label', multiple='stack')
plt.xlabel('Height')
plt.ylabel('Frequency')
plt.title('Distribution of Height for Different Categories')
plt.legend(title='Category')
# Create custom legend handles
legend_handles = [Patch(facecolor=colors[i], edgecolor='w', label=category) for i, category in enumerate(unique_categories)]
plt.legend(handles=legend_handles, title='Category', loc='upper right')
plt.show()
WARNING:matplotlib.legend:No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
It appears that the height is distributed unevenly among different categories
# Plotting the grouped histogram
unique_categories = df['label'].unique()
colors = sns.color_palette('husl', n_colors=len(unique_categories))
sns.set_palette(colors)
plt.figure(figsize=(8, 6))
sns.histplot(data=df, x='width', hue='label', multiple='stack')
plt.xlabel('width')
plt.ylabel('Frequency')
plt.title('Distribution of width for Different Categories')
plt.legend(title='Category')
# Create custom legend handles
legend_handles = [Patch(facecolor=colors[i], edgecolor='w', label=category) for i, category in enumerate(unique_categories)]
plt.legend(handles=legend_handles, title='Category', loc='upper right')
plt.show()
WARNING:matplotlib.legend:No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Similar inference may be drawn for the case of width
def edges_images_gray(class_name):
classes_df = df[df['label'] == class_name].reset_index(drop=True)
for idx, m in enumerate(np.random.choice(df['path'], 4)):
print(f"Processing image: {m}")
image = cv2.imread(m)
if image is None:
print(f"Error loading image: {m}")
continue
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edges = sobel(image)
gray_edges = canny(gray)
dimension = edges.shape
fig = plt.figure(figsize=(8, 8))
plt.suptitle(class_name)
plt.subplot(2, 2, 1)
plt.imshow(gray_edges)
plt.subplot(2, 2, 2)
plt.imshow(edges[:dimension[0], :dimension[1], 0], cmap="gray")
plt.subplot(2, 2, 3)
plt.imshow(edges[:dimension[0], :dimension[1], 1], cmap='gray')
plt.subplot(2, 2, 4)
plt.imshow(edges[:dimension[0], :dimension[1], 2], cmap='gray')
plt.show()
for class_name in df['label'].unique():
edges_images_gray(class_name)
Processing image: /content/drive/My Drive/weather/cloudy/cloudy84.jpg
Processing image: /content/drive/My Drive/weather/shine/shine153.jpg
Processing image: /content/drive/My Drive/weather/rain/rain106.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise62.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy10.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise26.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy37.jpg
Processing image: /content/drive/My Drive/weather/shine/shine153.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise151.jpg
Processing image: /content/drive/My Drive/weather/cloudy/cloudy265.jpg
Processing image: /content/drive/My Drive/weather/shine/shine5.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise141.jpg
Processing image: /content/drive/My Drive/weather/shine/shine198.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise320.jpg
Processing image: /content/drive/My Drive/weather/rain/rain27.jpg
Processing image: /content/drive/My Drive/weather/sunrise/sunrise162.jpg
def check_color_number(Image):
weight = Image.size[0]
height =Image.size[1]
for m in range(weight):
for n in range(height):
r,g,b = Image.getpixel((m,n))
if r != g != b:
return False
return True
sampleFrac = 0.5
checkcolor_lst = []
for imageName in df['path'].sample(frac=sampleFrac):
val = Image.open(imageName).convert('RGB')
checkcolor_lst.append(check_color_number(val))
print(np.sum(checkcolor_lst) / len(checkcolor_lst))
del checkcolor_lst
0.030249110320284697
Since the scale value is very small, it suggests that to the range of 0 to 1, the images in the dataset have a limited range of colors. Thus, a choice of red, green and blue seems to be reasonable.
def calculate_rgb_sums(row):
image = cv2.imread(row['path'])
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
red_sum = np.sum(image[:, :, 0])
green_sum = np.sum(image[:, :, 1])
blue_sum = np.sum(image[:, :, 2])
return red_sum, green_sum, blue_sum
tqdm.pandas()
df[['R', 'G', 'B']] = df.progress_apply(lambda row: pd.Series(calculate_rgb_sums(row)), axis=1)
100%|██████████| 1125/1125 [00:18<00:00, 60.29it/s]
def color_distribution(df, count):
fig, ax = plt.subplots(count, 2, figsize=(15, 15))
if df.empty:
print("The selected color has weak image intensity.")
return
for idx, path in enumerate(np.random.choice(df['path'], count)):
image = cv2.imread(path)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
ax[idx, 0].imshow(image_rgb)
ax[idx, 0].axis('off')
color_means = np.mean(image_rgb, axis=(0, 1))
ax[idx, 1].set_title('R={:.0f}, G={:.0f}, B={:.0f}'.format(color_means[0], color_means[1], color_means[2]))
for channel in range(3):
histogram, bins = np.histogram(image_rgb[:, :, channel], bins=255)
ax[idx, 1].bar(bins[:-1], histogram, label=['R', 'G', 'B'][channel], alpha=0.8, color=['red', 'green', 'blue'][channel])
ax[idx, 1].legend()
ax[idx, 1].axis('off')
conditions = [
((df['B']) < df['R']) & ((df['G']) < df['R']), # Condition for red images
(df['G'] > df['R']) & (df['G'] > df['B']), # Condition for green images
(df['B'] > df['R']) & (df['B'] > df['G']) # Condition for blue images
]
labels = ['Red', 'Green', 'Blue']
for condition, label in zip(conditions, labels):
filtered_df = df[condition]
if not filtered_df.empty:
color_distribution(filtered_df, 8)
plt.suptitle(f"{label} Images", fontsize=16) # Add a title to indicate the condition
plt.show()
else:
print(f"No {label} images found.")
According to the above investigation, it appears that the color distribution of the selected sample images follow the expectation of conventional understanding regarding colors.
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from tensorflow.keras.applications.vgg16 import preprocess_input
from keras.models import Sequential, Model
from keras.layers import Convolution2D, MaxPooling2D, AveragePooling2D, GlobalAveragePooling2D
from sklearn.model_selection import train_test_split
from tensorflow.keras.regularizers import l2
from tensorflow.keras.layers import Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
Start off with using pre-trained models
combinations=[[5,16],[5,32],[5,64],[5,128], [10,16],[10,32],[10,64],[10,128], [20,16],[20,32],[20,64],[20,128],[50,16],[50,32],[50,64],[50,128]]
dir="/content/drive/My Drive/weather"
labels=os.listdir(dir)
#get image arrays and label arrays
def input_target_split(directory, labels):
dataset = []
stored = {}
count = 0
print('Labels:', labels)
for label in labels:
folder = os.path.join(directory, label)
for image in os.listdir(folder):
try:
img_path = os.path.join(folder, image)
img = load_img(img_path, target_size=(150, 150))
img = img_to_array(img) / 255.0
dataset.append((img, count))
except:
pass
print(f'\rCompleted: {label}', end='')
stored[label] = count
count += 1
print('Dataset length:', len(dataset))
random.shuffle(dataset)
X, y = zip(*dataset)
return np.array(X), np.array(y)
X, y = input_target_split(dir,labels)
Labels: ['cloudy', 'shine', 'rain', 'sunrise'] Completed: sunriseDataset length: 1125
from sklearn.model_selection import train_test_split
# Split the data into training and test sets
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Further split the training set into training and validation sets
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
#prepare the y values using diagnomnal matrixs
#4 for only four categories
num_labels=len(np.unique(df['label']))
y_train=np.eye(num_labels)[Y_train]
y_test=np.eye(num_labels)[Y_test]
y_val=np.eye(num_labels)[Y_val]
base_model=VGG16(weights='imagenet',include_top=False,input_shape=(150, 150, 3))
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5 58889256/58889256 [==============================] - 4s 0us/step
for layer in base_model.layers:
layer.trainable = False
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu')(x)
predictions = Dense(num_labels, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
Epoch 1/10 23/23 [==============================] - 17s 221ms/step - loss: 0.9679 - accuracy: 0.6139 - val_loss: 0.7278 - val_accuracy: 0.7611 Epoch 2/10 23/23 [==============================] - 2s 82ms/step - loss: 0.5589 - accuracy: 0.8125 - val_loss: 0.5739 - val_accuracy: 0.7611 Epoch 3/10 23/23 [==============================] - 2s 82ms/step - loss: 0.4327 - accuracy: 0.8542 - val_loss: 0.4438 - val_accuracy: 0.8222 Epoch 4/10 23/23 [==============================] - 2s 94ms/step - loss: 0.3282 - accuracy: 0.8903 - val_loss: 0.3931 - val_accuracy: 0.8500 Epoch 5/10 23/23 [==============================] - 2s 97ms/step - loss: 0.2784 - accuracy: 0.9139 - val_loss: 0.3503 - val_accuracy: 0.8722 Epoch 6/10 23/23 [==============================] - 2s 97ms/step - loss: 0.2404 - accuracy: 0.9278 - val_loss: 0.3255 - val_accuracy: 0.8944 Epoch 7/10 23/23 [==============================] - 2s 94ms/step - loss: 0.2083 - accuracy: 0.9347 - val_loss: 0.3230 - val_accuracy: 0.8667 Epoch 8/10 23/23 [==============================] - 2s 82ms/step - loss: 0.1773 - accuracy: 0.9514 - val_loss: 0.2903 - val_accuracy: 0.9222 Epoch 9/10 23/23 [==============================] - 2s 82ms/step - loss: 0.1597 - accuracy: 0.9625 - val_loss: 0.2724 - val_accuracy: 0.9278 Epoch 10/10 23/23 [==============================] - 2s 82ms/step - loss: 0.1480 - accuracy: 0.9556 - val_loss: 0.2959 - val_accuracy: 0.8833
import matplotlib.pyplot as plt
# Get the accuracy and loss values from the history object
train_accuracy = history.history['accuracy']
val_accuracy = history.history['val_accuracy']
train_loss = history.history['loss']
val_loss = history.history['val_loss']
# Plot accuracy
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
epochs = range(1, len(train_accuracy) + 1)
plt.plot(epochs, train_accuracy, 'b-', label='Training Accuracy')
plt.plot(epochs, val_accuracy, 'r-', label='Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()
# Plot loss
plt.subplot(1, 2, 2)
plt.plot(epochs, train_loss, 'b-', label='Training Loss')
plt.plot(epochs, val_loss, 'r-', label='Validation Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.tight_layout()
plt.show()
# Make predictions on the test set
predictions = model.predict(X_test)
# Convert predictions to class labels
predicted_labels = np.argmax(predictions, axis=1)
# Compare predicted labels with true labels
accuracy = np.mean(predicted_labels == Y_test)
print("Test set accuracy:", accuracy)
8/8 [==============================] - 1s 132ms/step Test set accuracy: 0.8977777777777778
Though the accuracy and loss in both training and validation deviate from each other, in general, they both exhibit similar tendency as epochs rises, i.e. Accuracy improves and loss decreases when epochs increases. However, it can be only the special case for this particular model with this particular combinations. And it also appears that the test set has relatively great accuracy. Therefore it is worth to try out different combinations of epoch and batch sizes to fully determine if this model architecture would yield overfitting/underfitting problems and to see if a regularization technique would be needed.
#write a function for modelling
def base_vgg_16_modelling(X,y,df,epochs,batch_size):
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
num_labels=len(np.unique(df['label']))
y_train=np.eye(num_labels)[Y_train]
y_test=np.eye(num_labels)[Y_test]
y_val=np.eye(num_labels)[Y_val]
#initialize the base model
# Build the model architecture
base_model=VGG16(weights='imagenet',include_top=False,input_shape=(150, 150, 3))
for layer in base_model.layers:
layer.trainable = False
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu')(x)
predictions = Dense(num_labels, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
# Compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size, validation_data=(X_val, y_val))
training_accuracy = history.history['accuracy']
training_loss = history.history['loss']
validation_accuracy = history.history['val_accuracy']
validation_loss = history.history['val_loss']
test_predictions = model.predict(X_test)
predicted_labels = np.argmax(test_predictions, axis=1)
# Compare predicted labels with true labels
accuracy = np.mean(predicted_labels == Y_test)
#test_loss, test_accuracy=model.evaluate(X_test,Y_test, batch_size=batch_size)
return training_accuracy, training_loss, validation_accuracy, validation_loss, accuracy
combinations=[[5,16],[5,32],[5,64],[5,128], [10,16],[10,32],[10,64],[10,128], [20,16],[20,32],[20,64],[20,128],[50,16],[50,32],[50,64],[50,128]]
arry=np.zeros((16,7))
for m in range(len(combinations)):
arry[m][0]=combinations[m][0]
arry[m][1]=combinations[m][1]
preliminary_model_output=list(base_vgg_16_modelling(X,y,df,combinations[m][0],combinations[m][1]))
arry[m][2]=np.mean(preliminary_model_output[0])
arry[m][3]=np.mean(preliminary_model_output[1])
arry[m][4]=np.mean(preliminary_model_output[2])
arry[m][5]=np.mean(preliminary_model_output[3])
arry[m][6]=preliminary_model_output[4]
#arry[m][7]=preliminary_model_output[5]
Epoch 1/5 45/45 [==============================] - 4s 72ms/step - loss: 0.8741 - accuracy: 0.6694 - val_loss: 0.5839 - val_accuracy: 0.7944 Epoch 2/5 45/45 [==============================] - 2s 52ms/step - loss: 0.4472 - accuracy: 0.8514 - val_loss: 0.4773 - val_accuracy: 0.8278 Epoch 3/5 45/45 [==============================] - 2s 51ms/step - loss: 0.3474 - accuracy: 0.8819 - val_loss: 0.4393 - val_accuracy: 0.8667 Epoch 4/5 45/45 [==============================] - 2s 51ms/step - loss: 0.2766 - accuracy: 0.9097 - val_loss: 0.3606 - val_accuracy: 0.8500 Epoch 5/5 45/45 [==============================] - 2s 45ms/step - loss: 0.2107 - accuracy: 0.9403 - val_loss: 0.3193 - val_accuracy: 0.9278 8/8 [==============================] - 1s 68ms/step Epoch 1/5 23/23 [==============================] - 3s 100ms/step - loss: 0.9867 - accuracy: 0.6083 - val_loss: 0.6759 - val_accuracy: 0.7556 Epoch 2/5 23/23 [==============================] - 2s 94ms/step - loss: 0.5464 - accuracy: 0.8278 - val_loss: 0.5090 - val_accuracy: 0.8000 Epoch 3/5 23/23 [==============================] - 2s 94ms/step - loss: 0.4101 - accuracy: 0.8639 - val_loss: 0.4395 - val_accuracy: 0.8333 Epoch 4/5 23/23 [==============================] - 2s 97ms/step - loss: 0.3278 - accuracy: 0.9000 - val_loss: 0.4313 - val_accuracy: 0.8222 Epoch 5/5 23/23 [==============================] - 2s 95ms/step - loss: 0.2773 - accuracy: 0.9111 - val_loss: 0.3497 - val_accuracy: 0.8778 8/8 [==============================] - 1s 67ms/step Epoch 1/5 12/12 [==============================] - 10s 473ms/step - loss: 1.1149 - accuracy: 0.5611 - val_loss: 0.8789 - val_accuracy: 0.7056 Epoch 2/5 12/12 [==============================] - 2s 183ms/step - loss: 0.7065 - accuracy: 0.7833 - val_loss: 0.6298 - val_accuracy: 0.7667 Epoch 3/5 12/12 [==============================] - 2s 153ms/step - loss: 0.5305 - accuracy: 0.8181 - val_loss: 0.5406 - val_accuracy: 0.7889 Epoch 4/5 12/12 [==============================] - 2s 151ms/step - loss: 0.4358 - accuracy: 0.8625 - val_loss: 0.4808 - val_accuracy: 0.8167 Epoch 5/5 12/12 [==============================] - 2s 174ms/step - loss: 0.3678 - accuracy: 0.8819 - val_loss: 0.4620 - val_accuracy: 0.8611 8/8 [==============================] - 1s 71ms/step Epoch 1/5 6/6 [==============================] - 16s 1s/step - loss: 1.2269 - accuracy: 0.4653 - val_loss: 1.0188 - val_accuracy: 0.6833 Epoch 2/5 6/6 [==============================] - 2s 365ms/step - loss: 0.8735 - accuracy: 0.7597 - val_loss: 0.7428 - val_accuracy: 0.7389 Epoch 3/5 6/6 [==============================] - 2s 360ms/step - loss: 0.6779 - accuracy: 0.7958 - val_loss: 0.6418 - val_accuracy: 0.7722 Epoch 4/5 6/6 [==============================] - 2s 369ms/step - loss: 0.5648 - accuracy: 0.8056 - val_loss: 0.5609 - val_accuracy: 0.7833 Epoch 5/5 6/6 [==============================] - 2s 314ms/step - loss: 0.4894 - accuracy: 0.8333 - val_loss: 0.5073 - val_accuracy: 0.8056 8/8 [==============================] - 1s 61ms/step Epoch 1/10 45/45 [==============================] - 4s 64ms/step - loss: 0.9051 - accuracy: 0.6694 - val_loss: 0.5859 - val_accuracy: 0.7722 Epoch 2/10 45/45 [==============================] - 2s 49ms/step - loss: 0.4552 - accuracy: 0.8514 - val_loss: 0.4655 - val_accuracy: 0.8111 Epoch 3/10 45/45 [==============================] - 2s 47ms/step - loss: 0.3536 - accuracy: 0.8750 - val_loss: 0.4473 - val_accuracy: 0.8000 Epoch 4/10 45/45 [==============================] - 2s 52ms/step - loss: 0.2816 - accuracy: 0.8972 - val_loss: 0.3522 - val_accuracy: 0.8556 Epoch 5/10 45/45 [==============================] - 2s 47ms/step - loss: 0.2173 - accuracy: 0.9389 - val_loss: 0.3048 - val_accuracy: 0.8944 Epoch 6/10 45/45 [==============================] - 2s 47ms/step - loss: 0.1972 - accuracy: 0.9319 - val_loss: 0.2950 - val_accuracy: 0.8778 Epoch 7/10 45/45 [==============================] - 2s 49ms/step - loss: 0.1641 - accuracy: 0.9514 - val_loss: 0.2870 - val_accuracy: 0.9111 Epoch 8/10 45/45 [==============================] - 2s 54ms/step - loss: 0.1387 - accuracy: 0.9611 - val_loss: 0.2631 - val_accuracy: 0.9167 Epoch 9/10 45/45 [==============================] - 2s 53ms/step - loss: 0.1240 - accuracy: 0.9722 - val_loss: 0.2574 - val_accuracy: 0.9056 Epoch 10/10 45/45 [==============================] - 2s 52ms/step - loss: 0.1038 - accuracy: 0.9736 - val_loss: 0.2374 - val_accuracy: 0.9222 8/8 [==============================] - 1s 71ms/step Epoch 1/10 23/23 [==============================] - 4s 100ms/step - loss: 1.0262 - accuracy: 0.5917 - val_loss: 0.7129 - val_accuracy: 0.7556 Epoch 2/10 23/23 [==============================] - 2s 84ms/step - loss: 0.5537 - accuracy: 0.8111 - val_loss: 0.5513 - val_accuracy: 0.7667 Epoch 3/10 23/23 [==============================] - 2s 95ms/step - loss: 0.4095 - accuracy: 0.8611 - val_loss: 0.4305 - val_accuracy: 0.8389 Epoch 4/10 23/23 [==============================] - 2s 83ms/step - loss: 0.3320 - accuracy: 0.8958 - val_loss: 0.3926 - val_accuracy: 0.8333 Epoch 5/10 23/23 [==============================] - 2s 96ms/step - loss: 0.2793 - accuracy: 0.9139 - val_loss: 0.3651 - val_accuracy: 0.8889 Epoch 6/10 23/23 [==============================] - 2s 98ms/step - loss: 0.2409 - accuracy: 0.9208 - val_loss: 0.3218 - val_accuracy: 0.8667 Epoch 7/10 23/23 [==============================] - 2s 86ms/step - loss: 0.2099 - accuracy: 0.9278 - val_loss: 0.3054 - val_accuracy: 0.9056 Epoch 8/10 23/23 [==============================] - 2s 84ms/step - loss: 0.1912 - accuracy: 0.9486 - val_loss: 0.2900 - val_accuracy: 0.9167 Epoch 9/10 23/23 [==============================] - 2s 84ms/step - loss: 0.1785 - accuracy: 0.9500 - val_loss: 0.2991 - val_accuracy: 0.9278 Epoch 10/10 23/23 [==============================] - 2s 84ms/step - loss: 0.1589 - accuracy: 0.9569 - val_loss: 0.2806 - val_accuracy: 0.9000 8/8 [==============================] - 1s 61ms/step Epoch 1/10 12/12 [==============================] - 4s 219ms/step - loss: 1.1922 - accuracy: 0.4722 - val_loss: 0.8651 - val_accuracy: 0.7222 Epoch 2/10 12/12 [==============================] - 2s 159ms/step - loss: 0.7383 - accuracy: 0.7417 - val_loss: 0.6436 - val_accuracy: 0.7833 Epoch 3/10 12/12 [==============================] - 2s 179ms/step - loss: 0.5366 - accuracy: 0.8264 - val_loss: 0.5451 - val_accuracy: 0.7889 Epoch 4/10 12/12 [==============================] - 2s 177ms/step - loss: 0.4369 - accuracy: 0.8528 - val_loss: 0.4752 - val_accuracy: 0.8111 Epoch 5/10 12/12 [==============================] - 2s 154ms/step - loss: 0.3733 - accuracy: 0.8722 - val_loss: 0.4227 - val_accuracy: 0.8333 Epoch 6/10 12/12 [==============================] - 2s 154ms/step - loss: 0.3230 - accuracy: 0.8861 - val_loss: 0.3922 - val_accuracy: 0.8611 Epoch 7/10 12/12 [==============================] - 2s 155ms/step - loss: 0.2815 - accuracy: 0.9111 - val_loss: 0.3633 - val_accuracy: 0.8667 Epoch 8/10 12/12 [==============================] - 2s 182ms/step - loss: 0.2675 - accuracy: 0.9111 - val_loss: 0.3654 - val_accuracy: 0.8667 Epoch 9/10 12/12 [==============================] - 2s 184ms/step - loss: 0.2401 - accuracy: 0.9250 - val_loss: 0.3493 - val_accuracy: 0.8611 Epoch 10/10 12/12 [==============================] - 2s 155ms/step - loss: 0.2109 - accuracy: 0.9347 - val_loss: 0.3085 - val_accuracy: 0.8889 8/8 [==============================] - 1s 74ms/step Epoch 1/10 6/6 [==============================] - 3s 365ms/step - loss: 1.2204 - accuracy: 0.4903 - val_loss: 0.9511 - val_accuracy: 0.6500 Epoch 2/10 6/6 [==============================] - 2s 358ms/step - loss: 0.8702 - accuracy: 0.7153 - val_loss: 0.8118 - val_accuracy: 0.7444 Epoch 3/10 6/6 [==============================] - 2s 306ms/step - loss: 0.6821 - accuracy: 0.7986 - val_loss: 0.6444 - val_accuracy: 0.7333 Epoch 4/10 6/6 [==============================] - 2s 307ms/step - loss: 0.5637 - accuracy: 0.8167 - val_loss: 0.5899 - val_accuracy: 0.7778 Epoch 5/10 6/6 [==============================] - 2s 312ms/step - loss: 0.4855 - accuracy: 0.8375 - val_loss: 0.5222 - val_accuracy: 0.7889 Epoch 6/10 6/6 [==============================] - 2s 367ms/step - loss: 0.4271 - accuracy: 0.8611 - val_loss: 0.4887 - val_accuracy: 0.8056 Epoch 7/10 6/6 [==============================] - 2s 318ms/step - loss: 0.3821 - accuracy: 0.8681 - val_loss: 0.4508 - val_accuracy: 0.8222 Epoch 8/10 6/6 [==============================] - 2s 362ms/step - loss: 0.3449 - accuracy: 0.8944 - val_loss: 0.4285 - val_accuracy: 0.8111 Epoch 9/10 6/6 [==============================] - 2s 313ms/step - loss: 0.3141 - accuracy: 0.9028 - val_loss: 0.4037 - val_accuracy: 0.8444 Epoch 10/10 6/6 [==============================] - 2s 311ms/step - loss: 0.2877 - accuracy: 0.9111 - val_loss: 0.3799 - val_accuracy: 0.8444 8/8 [==============================] - 1s 62ms/step Epoch 1/20 45/45 [==============================] - 4s 60ms/step - loss: 0.8093 - accuracy: 0.7167 - val_loss: 0.5484 - val_accuracy: 0.7889 Epoch 2/20 45/45 [==============================] - 2s 54ms/step - loss: 0.4232 - accuracy: 0.8597 - val_loss: 0.4314 - val_accuracy: 0.8222 Epoch 3/20 45/45 [==============================] - 2s 53ms/step - loss: 0.3150 - accuracy: 0.8958 - val_loss: 0.3719 - val_accuracy: 0.8667 Epoch 4/20 45/45 [==============================] - 2s 53ms/step - loss: 0.2456 - accuracy: 0.9181 - val_loss: 0.3265 - val_accuracy: 0.8722 Epoch 5/20 45/45 [==============================] - 2s 53ms/step - loss: 0.2079 - accuracy: 0.9417 - val_loss: 0.3012 - val_accuracy: 0.9111 Epoch 6/20 45/45 [==============================] - 2s 48ms/step - loss: 0.1709 - accuracy: 0.9417 - val_loss: 0.2664 - val_accuracy: 0.9056 Epoch 7/20 45/45 [==============================] - 2s 55ms/step - loss: 0.1490 - accuracy: 0.9556 - val_loss: 0.2647 - val_accuracy: 0.9056 Epoch 8/20 45/45 [==============================] - 2s 54ms/step - loss: 0.1339 - accuracy: 0.9694 - val_loss: 0.2510 - val_accuracy: 0.9111 Epoch 9/20 45/45 [==============================] - 2s 53ms/step - loss: 0.1107 - accuracy: 0.9750 - val_loss: 0.2423 - val_accuracy: 0.9222 Epoch 10/20 45/45 [==============================] - 2s 49ms/step - loss: 0.1092 - accuracy: 0.9722 - val_loss: 0.2350 - val_accuracy: 0.9278 Epoch 11/20 45/45 [==============================] - 2s 48ms/step - loss: 0.0968 - accuracy: 0.9764 - val_loss: 0.2596 - val_accuracy: 0.9278 Epoch 12/20 45/45 [==============================] - 2s 49ms/step - loss: 0.0695 - accuracy: 0.9875 - val_loss: 0.2212 - val_accuracy: 0.9278 Epoch 13/20 45/45 [==============================] - 2s 54ms/step - loss: 0.0635 - accuracy: 0.9875 - val_loss: 0.2311 - val_accuracy: 0.9167 Epoch 14/20 45/45 [==============================] - 2s 53ms/step - loss: 0.0564 - accuracy: 0.9889 - val_loss: 0.2344 - val_accuracy: 0.9333 Epoch 15/20 45/45 [==============================] - 2s 48ms/step - loss: 0.0560 - accuracy: 0.9833 - val_loss: 0.2357 - val_accuracy: 0.9278 Epoch 16/20 45/45 [==============================] - 2s 53ms/step - loss: 0.0648 - accuracy: 0.9833 - val_loss: 0.2126 - val_accuracy: 0.9333 Epoch 17/20 45/45 [==============================] - 2s 48ms/step - loss: 0.0392 - accuracy: 0.9944 - val_loss: 0.2444 - val_accuracy: 0.9222 Epoch 18/20 45/45 [==============================] - 2s 53ms/step - loss: 0.0447 - accuracy: 0.9917 - val_loss: 0.2460 - val_accuracy: 0.8889 Epoch 19/20 45/45 [==============================] - 2s 53ms/step - loss: 0.0347 - accuracy: 0.9917 - val_loss: 0.2097 - val_accuracy: 0.9222 Epoch 20/20 45/45 [==============================] - 2s 48ms/step - loss: 0.0284 - accuracy: 0.9972 - val_loss: 0.2183 - val_accuracy: 0.9389 8/8 [==============================] - 1s 70ms/step Epoch 1/20 23/23 [==============================] - 3s 100ms/step - loss: 0.9949 - accuracy: 0.6069 - val_loss: 0.7061 - val_accuracy: 0.7278 Epoch 2/20 23/23 [==============================] - 2s 96ms/step - loss: 0.5805 - accuracy: 0.7931 - val_loss: 0.5459 - val_accuracy: 0.8056 Epoch 3/20 23/23 [==============================] - 2s 97ms/step - loss: 0.4356 - accuracy: 0.8667 - val_loss: 0.4587 - val_accuracy: 0.8056 Epoch 4/20 23/23 [==============================] - 2s 100ms/step - loss: 0.3491 - accuracy: 0.8875 - val_loss: 0.4006 - val_accuracy: 0.8444 Epoch 5/20 23/23 [==============================] - 2s 99ms/step - loss: 0.2942 - accuracy: 0.9014 - val_loss: 0.3686 - val_accuracy: 0.8778 Epoch 6/20 23/23 [==============================] - 2s 97ms/step - loss: 0.2533 - accuracy: 0.9194 - val_loss: 0.3509 - val_accuracy: 0.9000 Epoch 7/20 23/23 [==============================] - 2s 86ms/step - loss: 0.2302 - accuracy: 0.9278 - val_loss: 0.3550 - val_accuracy: 0.8444 Epoch 8/20 23/23 [==============================] - 2s 97ms/step - loss: 0.1978 - accuracy: 0.9444 - val_loss: 0.3428 - val_accuracy: 0.8556 Epoch 9/20 23/23 [==============================] - 2s 97ms/step - loss: 0.1865 - accuracy: 0.9361 - val_loss: 0.3425 - val_accuracy: 0.9000 Epoch 10/20 23/23 [==============================] - 2s 99ms/step - loss: 0.1554 - accuracy: 0.9514 - val_loss: 0.2796 - val_accuracy: 0.9000 Epoch 11/20 23/23 [==============================] - 2s 101ms/step - loss: 0.1387 - accuracy: 0.9625 - val_loss: 0.2718 - val_accuracy: 0.9222 Epoch 12/20 23/23 [==============================] - 2s 97ms/step - loss: 0.1238 - accuracy: 0.9736 - val_loss: 0.2585 - val_accuracy: 0.9000 Epoch 13/20 23/23 [==============================] - 2s 85ms/step - loss: 0.1119 - accuracy: 0.9681 - val_loss: 0.2519 - val_accuracy: 0.9222 Epoch 14/20 23/23 [==============================] - 2s 96ms/step - loss: 0.0996 - accuracy: 0.9806 - val_loss: 0.2606 - val_accuracy: 0.8833 Epoch 15/20 23/23 [==============================] - 2s 97ms/step - loss: 0.0888 - accuracy: 0.9792 - val_loss: 0.2496 - val_accuracy: 0.9222 Epoch 16/20 23/23 [==============================] - 2s 97ms/step - loss: 0.0851 - accuracy: 0.9833 - val_loss: 0.2445 - val_accuracy: 0.9167 Epoch 17/20 23/23 [==============================] - 2s 100ms/step - loss: 0.0828 - accuracy: 0.9819 - val_loss: 0.2414 - val_accuracy: 0.9111 Epoch 18/20 23/23 [==============================] - 2s 86ms/step - loss: 0.0741 - accuracy: 0.9806 - val_loss: 0.2667 - val_accuracy: 0.8833 Epoch 19/20 23/23 [==============================] - 2s 96ms/step - loss: 0.0704 - accuracy: 0.9861 - val_loss: 0.2268 - val_accuracy: 0.9278 Epoch 20/20 23/23 [==============================] - 2s 85ms/step - loss: 0.0722 - accuracy: 0.9847 - val_loss: 0.2857 - val_accuracy: 0.9056 8/8 [==============================] - 1s 61ms/step Epoch 1/20 12/12 [==============================] - 4s 221ms/step - loss: 1.1239 - accuracy: 0.5556 - val_loss: 0.8055 - val_accuracy: 0.7000 Epoch 2/20 12/12 [==============================] - 2s 182ms/step - loss: 0.6786 - accuracy: 0.7972 - val_loss: 0.6341 - val_accuracy: 0.7556 Epoch 3/20 12/12 [==============================] - 2s 179ms/step - loss: 0.5148 - accuracy: 0.8333 - val_loss: 0.5539 - val_accuracy: 0.7944 Epoch 4/20 12/12 [==============================] - 2s 179ms/step - loss: 0.4298 - accuracy: 0.8528 - val_loss: 0.5111 - val_accuracy: 0.7778 Epoch 5/20 12/12 [==============================] - 2s 156ms/step - loss: 0.3902 - accuracy: 0.8667 - val_loss: 0.4676 - val_accuracy: 0.8000 Epoch 6/20 12/12 [==============================] - 2s 179ms/step - loss: 0.3292 - accuracy: 0.8903 - val_loss: 0.4071 - val_accuracy: 0.8611 Epoch 7/20 12/12 [==============================] - 2s 180ms/step - loss: 0.2826 - accuracy: 0.9083 - val_loss: 0.3784 - val_accuracy: 0.8500 Epoch 8/20 12/12 [==============================] - 2s 185ms/step - loss: 0.2813 - accuracy: 0.9153 - val_loss: 0.3827 - val_accuracy: 0.8722 Epoch 9/20 12/12 [==============================] - 2s 181ms/step - loss: 0.2411 - accuracy: 0.9264 - val_loss: 0.3453 - val_accuracy: 0.8556 Epoch 10/20 12/12 [==============================] - 2s 181ms/step - loss: 0.2252 - accuracy: 0.9319 - val_loss: 0.3355 - val_accuracy: 0.8667 Epoch 11/20 12/12 [==============================] - 2s 159ms/step - loss: 0.1972 - accuracy: 0.9458 - val_loss: 0.3084 - val_accuracy: 0.8833 Epoch 12/20 12/12 [==============================] - 2s 181ms/step - loss: 0.1802 - accuracy: 0.9472 - val_loss: 0.2992 - val_accuracy: 0.8944 Epoch 13/20 12/12 [==============================] - 2s 181ms/step - loss: 0.1675 - accuracy: 0.9556 - val_loss: 0.3074 - val_accuracy: 0.8944 Epoch 14/20 12/12 [==============================] - 2s 163ms/step - loss: 0.1596 - accuracy: 0.9556 - val_loss: 0.2877 - val_accuracy: 0.8889 Epoch 15/20 12/12 [==============================] - 2s 186ms/step - loss: 0.1432 - accuracy: 0.9736 - val_loss: 0.2720 - val_accuracy: 0.8944 Epoch 16/20 12/12 [==============================] - 2s 180ms/step - loss: 0.1342 - accuracy: 0.9708 - val_loss: 0.2609 - val_accuracy: 0.9167 Epoch 17/20 12/12 [==============================] - 2s 182ms/step - loss: 0.1399 - accuracy: 0.9528 - val_loss: 0.2719 - val_accuracy: 0.9167 Epoch 18/20 12/12 [==============================] - 2s 182ms/step - loss: 0.1208 - accuracy: 0.9778 - val_loss: 0.2789 - val_accuracy: 0.8889 Epoch 19/20 12/12 [==============================] - 2s 157ms/step - loss: 0.1150 - accuracy: 0.9764 - val_loss: 0.2471 - val_accuracy: 0.9111 Epoch 20/20 12/12 [==============================] - 2s 159ms/step - loss: 0.1010 - accuracy: 0.9806 - val_loss: 0.2445 - val_accuracy: 0.9111 8/8 [==============================] - 1s 68ms/step Epoch 1/20 6/6 [==============================] - 4s 379ms/step - loss: 1.2474 - accuracy: 0.4583 - val_loss: 1.0240 - val_accuracy: 0.6722 Epoch 2/20 6/6 [==============================] - 2s 314ms/step - loss: 0.9162 - accuracy: 0.7028 - val_loss: 0.8063 - val_accuracy: 0.7500 Epoch 3/20 6/6 [==============================] - 2s 324ms/step - loss: 0.7178 - accuracy: 0.8069 - val_loss: 0.6838 - val_accuracy: 0.7556 Epoch 4/20 6/6 [==============================] - 2s 329ms/step - loss: 0.5905 - accuracy: 0.8153 - val_loss: 0.5905 - val_accuracy: 0.7556 Epoch 5/20 6/6 [==============================] - 2s 321ms/step - loss: 0.5069 - accuracy: 0.8319 - val_loss: 0.5359 - val_accuracy: 0.7889 Epoch 6/20 6/6 [==============================] - 2s 365ms/step - loss: 0.4424 - accuracy: 0.8542 - val_loss: 0.4900 - val_accuracy: 0.8111 Epoch 7/20 6/6 [==============================] - 2s 371ms/step - loss: 0.3964 - accuracy: 0.8667 - val_loss: 0.4595 - val_accuracy: 0.8167 Epoch 8/20 6/6 [==============================] - 2s 324ms/step - loss: 0.3574 - accuracy: 0.8778 - val_loss: 0.4244 - val_accuracy: 0.8389 Epoch 9/20 6/6 [==============================] - 2s 324ms/step - loss: 0.3281 - accuracy: 0.9042 - val_loss: 0.4114 - val_accuracy: 0.8333 Epoch 10/20 6/6 [==============================] - 2s 330ms/step - loss: 0.3012 - accuracy: 0.9000 - val_loss: 0.3817 - val_accuracy: 0.8556 Epoch 11/20 6/6 [==============================] - 2s 337ms/step - loss: 0.2747 - accuracy: 0.9167 - val_loss: 0.3677 - val_accuracy: 0.8444 Epoch 12/20 6/6 [==============================] - 2s 378ms/step - loss: 0.2553 - accuracy: 0.9194 - val_loss: 0.3497 - val_accuracy: 0.8667 Epoch 13/20 6/6 [==============================] - 2s 330ms/step - loss: 0.2380 - accuracy: 0.9236 - val_loss: 0.3349 - val_accuracy: 0.8722 Epoch 14/20 6/6 [==============================] - 2s 374ms/step - loss: 0.2235 - accuracy: 0.9292 - val_loss: 0.3294 - val_accuracy: 0.8667 Epoch 15/20 6/6 [==============================] - 2s 373ms/step - loss: 0.2050 - accuracy: 0.9375 - val_loss: 0.3113 - val_accuracy: 0.8833 Epoch 16/20 6/6 [==============================] - 2s 325ms/step - loss: 0.1928 - accuracy: 0.9417 - val_loss: 0.3055 - val_accuracy: 0.8778 Epoch 17/20 6/6 [==============================] - 2s 374ms/step - loss: 0.1825 - accuracy: 0.9472 - val_loss: 0.2943 - val_accuracy: 0.8833 Epoch 18/20 6/6 [==============================] - 2s 378ms/step - loss: 0.1694 - accuracy: 0.9514 - val_loss: 0.2844 - val_accuracy: 0.8889 Epoch 19/20 6/6 [==============================] - 2s 320ms/step - loss: 0.1602 - accuracy: 0.9639 - val_loss: 0.2791 - val_accuracy: 0.9000 Epoch 20/20 6/6 [==============================] - 2s 365ms/step - loss: 0.1509 - accuracy: 0.9653 - val_loss: 0.2731 - val_accuracy: 0.8944 8/8 [==============================] - 1s 62ms/step Epoch 1/50 45/45 [==============================] - 4s 61ms/step - loss: 0.8658 - accuracy: 0.6819 - val_loss: 0.6120 - val_accuracy: 0.7722 Epoch 2/50 45/45 [==============================] - 2s 54ms/step - loss: 0.4757 - accuracy: 0.8431 - val_loss: 0.4614 - val_accuracy: 0.8278 Epoch 3/50 45/45 [==============================] - 2s 49ms/step - loss: 0.3439 - accuracy: 0.8792 - val_loss: 0.4452 - val_accuracy: 0.8056 Epoch 4/50 45/45 [==============================] - 2s 47ms/step - loss: 0.2728 - accuracy: 0.9042 - val_loss: 0.3616 - val_accuracy: 0.8444 Epoch 5/50 45/45 [==============================] - 2s 48ms/step - loss: 0.2467 - accuracy: 0.9181 - val_loss: 0.3506 - val_accuracy: 0.8389 Epoch 6/50 45/45 [==============================] - 2s 47ms/step - loss: 0.1913 - accuracy: 0.9417 - val_loss: 0.3627 - val_accuracy: 0.8444 Epoch 7/50 45/45 [==============================] - 2s 52ms/step - loss: 0.1715 - accuracy: 0.9486 - val_loss: 0.2668 - val_accuracy: 0.9111 Epoch 8/50 45/45 [==============================] - 2s 53ms/step - loss: 0.1558 - accuracy: 0.9583 - val_loss: 0.3118 - val_accuracy: 0.8944 Epoch 9/50 45/45 [==============================] - 2s 55ms/step - loss: 0.1444 - accuracy: 0.9569 - val_loss: 0.2630 - val_accuracy: 0.9278 Epoch 10/50 45/45 [==============================] - 2s 48ms/step - loss: 0.1130 - accuracy: 0.9750 - val_loss: 0.2365 - val_accuracy: 0.9222 Epoch 11/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0921 - accuracy: 0.9806 - val_loss: 0.2414 - val_accuracy: 0.9167 Epoch 12/50 45/45 [==============================] - 2s 49ms/step - loss: 0.0884 - accuracy: 0.9792 - val_loss: 0.2403 - val_accuracy: 0.9000 Epoch 13/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0734 - accuracy: 0.9861 - val_loss: 0.2220 - val_accuracy: 0.9278 Epoch 14/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0736 - accuracy: 0.9819 - val_loss: 0.2321 - val_accuracy: 0.9278 Epoch 15/50 45/45 [==============================] - 2s 54ms/step - loss: 0.0701 - accuracy: 0.9861 - val_loss: 0.2400 - val_accuracy: 0.9389 Epoch 16/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0752 - accuracy: 0.9792 - val_loss: 0.2228 - val_accuracy: 0.9167 Epoch 17/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0498 - accuracy: 0.9917 - val_loss: 0.2490 - val_accuracy: 0.8889 Epoch 18/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0455 - accuracy: 0.9931 - val_loss: 0.2454 - val_accuracy: 0.9000 Epoch 19/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0405 - accuracy: 0.9917 - val_loss: 0.2340 - val_accuracy: 0.9278 Epoch 20/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0369 - accuracy: 0.9972 - val_loss: 0.2663 - val_accuracy: 0.9222 Epoch 21/50 45/45 [==============================] - 2s 50ms/step - loss: 0.0342 - accuracy: 0.9958 - val_loss: 0.2193 - val_accuracy: 0.9278 Epoch 22/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0266 - accuracy: 0.9972 - val_loss: 0.2688 - val_accuracy: 0.9000 Epoch 23/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0260 - accuracy: 0.9986 - val_loss: 0.2247 - val_accuracy: 0.9222 Epoch 24/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0237 - accuracy: 1.0000 - val_loss: 0.2309 - val_accuracy: 0.9222 Epoch 25/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0207 - accuracy: 0.9986 - val_loss: 0.2309 - val_accuracy: 0.9222 Epoch 26/50 45/45 [==============================] - 2s 49ms/step - loss: 0.0219 - accuracy: 0.9972 - val_loss: 0.2235 - val_accuracy: 0.9333 Epoch 27/50 45/45 [==============================] - 2s 49ms/step - loss: 0.0169 - accuracy: 1.0000 - val_loss: 0.2224 - val_accuracy: 0.9222 Epoch 28/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0149 - accuracy: 1.0000 - val_loss: 0.2207 - val_accuracy: 0.9278 Epoch 29/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0127 - accuracy: 1.0000 - val_loss: 0.2423 - val_accuracy: 0.9278 Epoch 30/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0144 - accuracy: 1.0000 - val_loss: 0.2309 - val_accuracy: 0.9167 Epoch 31/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0137 - accuracy: 1.0000 - val_loss: 0.2394 - val_accuracy: 0.9278 Epoch 32/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0140 - accuracy: 0.9986 - val_loss: 0.2376 - val_accuracy: 0.9278 Epoch 33/50 45/45 [==============================] - 2s 54ms/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.2295 - val_accuracy: 0.9167 Epoch 34/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0094 - accuracy: 1.0000 - val_loss: 0.2444 - val_accuracy: 0.9222 Epoch 35/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0083 - accuracy: 1.0000 - val_loss: 0.2348 - val_accuracy: 0.9278 Epoch 36/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0085 - accuracy: 1.0000 - val_loss: 0.2504 - val_accuracy: 0.9278 Epoch 37/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0072 - accuracy: 1.0000 - val_loss: 0.2452 - val_accuracy: 0.9278 Epoch 38/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0064 - accuracy: 1.0000 - val_loss: 0.2455 - val_accuracy: 0.9222 Epoch 39/50 45/45 [==============================] - 2s 54ms/step - loss: 0.0058 - accuracy: 1.0000 - val_loss: 0.2565 - val_accuracy: 0.9278 Epoch 40/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0061 - accuracy: 1.0000 - val_loss: 0.2621 - val_accuracy: 0.9278 Epoch 41/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0054 - accuracy: 1.0000 - val_loss: 0.2567 - val_accuracy: 0.9278 Epoch 42/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0047 - accuracy: 1.0000 - val_loss: 0.2617 - val_accuracy: 0.9167 Epoch 43/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0048 - accuracy: 1.0000 - val_loss: 0.2605 - val_accuracy: 0.9167 Epoch 44/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0049 - accuracy: 1.0000 - val_loss: 0.2533 - val_accuracy: 0.9278 Epoch 45/50 45/45 [==============================] - 2s 54ms/step - loss: 0.0040 - accuracy: 1.0000 - val_loss: 0.2656 - val_accuracy: 0.9111 Epoch 46/50 45/45 [==============================] - 2s 48ms/step - loss: 0.0044 - accuracy: 1.0000 - val_loss: 0.2573 - val_accuracy: 0.9333 Epoch 47/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0037 - accuracy: 1.0000 - val_loss: 0.2593 - val_accuracy: 0.9167 Epoch 48/50 45/45 [==============================] - 2s 52ms/step - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.2674 - val_accuracy: 0.9222 Epoch 49/50 45/45 [==============================] - 2s 47ms/step - loss: 0.0035 - accuracy: 1.0000 - val_loss: 0.2685 - val_accuracy: 0.9278 Epoch 50/50 45/45 [==============================] - 2s 53ms/step - loss: 0.0034 - accuracy: 1.0000 - val_loss: 0.2593 - val_accuracy: 0.9167 8/8 [==============================] - 1s 69ms/step Epoch 1/50 23/23 [==============================] - 4s 113ms/step - loss: 1.0535 - accuracy: 0.5514 - val_loss: 0.7965 - val_accuracy: 0.6833 Epoch 2/50 23/23 [==============================] - 2s 98ms/step - loss: 0.5864 - accuracy: 0.8153 - val_loss: 0.5241 - val_accuracy: 0.7889 Epoch 3/50 23/23 [==============================] - 2s 99ms/step - loss: 0.4311 - accuracy: 0.8653 - val_loss: 0.4520 - val_accuracy: 0.8389 Epoch 4/50 23/23 [==============================] - 2s 100ms/step - loss: 0.3393 - accuracy: 0.8917 - val_loss: 0.4407 - val_accuracy: 0.8000 Epoch 5/50 23/23 [==============================] - 2s 86ms/step - loss: 0.3121 - accuracy: 0.8972 - val_loss: 0.3606 - val_accuracy: 0.8611 Epoch 6/50 23/23 [==============================] - 2s 98ms/step - loss: 0.2465 - accuracy: 0.9222 - val_loss: 0.3411 - val_accuracy: 0.8722 Epoch 7/50 23/23 [==============================] - 2s 98ms/step - loss: 0.2163 - accuracy: 0.9347 - val_loss: 0.3223 - val_accuracy: 0.9000 Epoch 8/50 23/23 [==============================] - 2s 87ms/step - loss: 0.1860 - accuracy: 0.9542 - val_loss: 0.3203 - val_accuracy: 0.8833 Epoch 9/50 23/23 [==============================] - 2s 99ms/step - loss: 0.1709 - accuracy: 0.9472 - val_loss: 0.2795 - val_accuracy: 0.8944 Epoch 10/50 23/23 [==============================] - 2s 101ms/step - loss: 0.1537 - accuracy: 0.9611 - val_loss: 0.2653 - val_accuracy: 0.9000 Epoch 11/50 23/23 [==============================] - 2s 98ms/step - loss: 0.1402 - accuracy: 0.9653 - val_loss: 0.2582 - val_accuracy: 0.9167 Epoch 12/50 23/23 [==============================] - 2s 98ms/step - loss: 0.1222 - accuracy: 0.9694 - val_loss: 0.2444 - val_accuracy: 0.9222 Epoch 13/50 23/23 [==============================] - 2s 98ms/step - loss: 0.1076 - accuracy: 0.9819 - val_loss: 0.2537 - val_accuracy: 0.9056 Epoch 14/50 23/23 [==============================] - 2s 89ms/step - loss: 0.1026 - accuracy: 0.9819 - val_loss: 0.2410 - val_accuracy: 0.9222 Epoch 15/50 23/23 [==============================] - 2s 99ms/step - loss: 0.0927 - accuracy: 0.9847 - val_loss: 0.2557 - val_accuracy: 0.9167 Epoch 16/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0881 - accuracy: 0.9778 - val_loss: 0.2373 - val_accuracy: 0.9278 Epoch 17/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0762 - accuracy: 0.9861 - val_loss: 0.2323 - val_accuracy: 0.9111 Epoch 18/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0706 - accuracy: 0.9833 - val_loss: 0.2220 - val_accuracy: 0.9111 Epoch 19/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0635 - accuracy: 0.9861 - val_loss: 0.2312 - val_accuracy: 0.9167 Epoch 20/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0580 - accuracy: 0.9917 - val_loss: 0.2292 - val_accuracy: 0.9056 Epoch 21/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0524 - accuracy: 0.9903 - val_loss: 0.2303 - val_accuracy: 0.9222 Epoch 22/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0515 - accuracy: 0.9931 - val_loss: 0.2247 - val_accuracy: 0.9111 Epoch 23/50 23/23 [==============================] - 2s 101ms/step - loss: 0.0482 - accuracy: 0.9944 - val_loss: 0.2160 - val_accuracy: 0.9222 Epoch 24/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0441 - accuracy: 0.9972 - val_loss: 0.2188 - val_accuracy: 0.9222 Epoch 25/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0381 - accuracy: 0.9986 - val_loss: 0.2182 - val_accuracy: 0.9167 Epoch 26/50 23/23 [==============================] - 2s 87ms/step - loss: 0.0364 - accuracy: 0.9986 - val_loss: 0.2244 - val_accuracy: 0.9278 Epoch 27/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0355 - accuracy: 1.0000 - val_loss: 0.2255 - val_accuracy: 0.9000 Epoch 28/50 23/23 [==============================] - 2s 99ms/step - loss: 0.0322 - accuracy: 0.9986 - val_loss: 0.2281 - val_accuracy: 0.9111 Epoch 29/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0277 - accuracy: 1.0000 - val_loss: 0.2211 - val_accuracy: 0.9167 Epoch 30/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0266 - accuracy: 0.9986 - val_loss: 0.2260 - val_accuracy: 0.9167 Epoch 31/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0248 - accuracy: 0.9986 - val_loss: 0.2149 - val_accuracy: 0.9278 Epoch 32/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0234 - accuracy: 1.0000 - val_loss: 0.2141 - val_accuracy: 0.9333 Epoch 33/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0211 - accuracy: 1.0000 - val_loss: 0.2306 - val_accuracy: 0.9111 Epoch 34/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0221 - accuracy: 1.0000 - val_loss: 0.2385 - val_accuracy: 0.9056 Epoch 35/50 23/23 [==============================] - 2s 88ms/step - loss: 0.0221 - accuracy: 0.9986 - val_loss: 0.2246 - val_accuracy: 0.9278 Epoch 36/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0239 - accuracy: 0.9986 - val_loss: 0.2206 - val_accuracy: 0.9278 Epoch 37/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0165 - accuracy: 1.0000 - val_loss: 0.2276 - val_accuracy: 0.9222 Epoch 38/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.2331 - val_accuracy: 0.9056 Epoch 39/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0148 - accuracy: 1.0000 - val_loss: 0.2449 - val_accuracy: 0.9167 Epoch 40/50 23/23 [==============================] - 2s 97ms/step - loss: 0.0130 - accuracy: 1.0000 - val_loss: 0.2350 - val_accuracy: 0.9278 Epoch 41/50 23/23 [==============================] - 2s 99ms/step - loss: 0.0127 - accuracy: 1.0000 - val_loss: 0.2327 - val_accuracy: 0.9111 Epoch 42/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0113 - accuracy: 1.0000 - val_loss: 0.2428 - val_accuracy: 0.9278 Epoch 43/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0111 - accuracy: 1.0000 - val_loss: 0.2269 - val_accuracy: 0.9222 Epoch 44/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0114 - accuracy: 1.0000 - val_loss: 0.2474 - val_accuracy: 0.9167 Epoch 45/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0112 - accuracy: 1.0000 - val_loss: 0.2371 - val_accuracy: 0.9167 Epoch 46/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0095 - accuracy: 1.0000 - val_loss: 0.2409 - val_accuracy: 0.9278 Epoch 47/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0090 - accuracy: 1.0000 - val_loss: 0.2445 - val_accuracy: 0.9222 Epoch 48/50 23/23 [==============================] - 2s 100ms/step - loss: 0.0094 - accuracy: 1.0000 - val_loss: 0.2448 - val_accuracy: 0.9222 Epoch 49/50 23/23 [==============================] - 2s 98ms/step - loss: 0.0080 - accuracy: 1.0000 - val_loss: 0.2480 - val_accuracy: 0.9111 Epoch 50/50 23/23 [==============================] - 2s 86ms/step - loss: 0.0081 - accuracy: 1.0000 - val_loss: 0.2464 - val_accuracy: 0.9222 8/8 [==============================] - 1s 62ms/step Epoch 1/50 12/12 [==============================] - 4s 210ms/step - loss: 1.1441 - accuracy: 0.5042 - val_loss: 0.8961 - val_accuracy: 0.6722 Epoch 2/50 12/12 [==============================] - 2s 183ms/step - loss: 0.7357 - accuracy: 0.7611 - val_loss: 0.6970 - val_accuracy: 0.7500 Epoch 3/50 12/12 [==============================] - 2s 187ms/step - loss: 0.5721 - accuracy: 0.8139 - val_loss: 0.5639 - val_accuracy: 0.7611 Epoch 4/50 12/12 [==============================] - 2s 182ms/step - loss: 0.4598 - accuracy: 0.8431 - val_loss: 0.4785 - val_accuracy: 0.8278 Epoch 5/50 12/12 [==============================] - 2s 159ms/step - loss: 0.3773 - accuracy: 0.8750 - val_loss: 0.4351 - val_accuracy: 0.8500 Epoch 6/50 12/12 [==============================] - 2s 181ms/step - loss: 0.3388 - accuracy: 0.8958 - val_loss: 0.4022 - val_accuracy: 0.8667 Epoch 7/50 12/12 [==============================] - 2s 182ms/step - loss: 0.2948 - accuracy: 0.9069 - val_loss: 0.3969 - val_accuracy: 0.8333 Epoch 8/50 12/12 [==============================] - 2s 182ms/step - loss: 0.2695 - accuracy: 0.9167 - val_loss: 0.3791 - val_accuracy: 0.8667 Epoch 9/50 12/12 [==============================] - 2s 187ms/step - loss: 0.2597 - accuracy: 0.9292 - val_loss: 0.3339 - val_accuracy: 0.8722 Epoch 10/50 12/12 [==============================] - 2s 182ms/step - loss: 0.2266 - accuracy: 0.9333 - val_loss: 0.3173 - val_accuracy: 0.8778 Epoch 11/50 12/12 [==============================] - 2s 183ms/step - loss: 0.2021 - accuracy: 0.9333 - val_loss: 0.3123 - val_accuracy: 0.9111 Epoch 12/50 12/12 [==============================] - 2s 182ms/step - loss: 0.1970 - accuracy: 0.9458 - val_loss: 0.3116 - val_accuracy: 0.8944 Epoch 13/50 12/12 [==============================] - 2s 157ms/step - loss: 0.1653 - accuracy: 0.9569 - val_loss: 0.2862 - val_accuracy: 0.9056 Epoch 14/50 12/12 [==============================] - 2s 182ms/step - loss: 0.1540 - accuracy: 0.9611 - val_loss: 0.2735 - val_accuracy: 0.9111 Epoch 15/50 12/12 [==============================] - 2s 160ms/step - loss: 0.1459 - accuracy: 0.9597 - val_loss: 0.2657 - val_accuracy: 0.9167 Epoch 16/50 12/12 [==============================] - 2s 187ms/step - loss: 0.1396 - accuracy: 0.9653 - val_loss: 0.2647 - val_accuracy: 0.9056 Epoch 17/50 12/12 [==============================] - 2s 181ms/step - loss: 0.1253 - accuracy: 0.9708 - val_loss: 0.2614 - val_accuracy: 0.9111 Epoch 18/50 12/12 [==============================] - 2s 181ms/step - loss: 0.1198 - accuracy: 0.9764 - val_loss: 0.2493 - val_accuracy: 0.9056 Epoch 19/50 12/12 [==============================] - 2s 158ms/step - loss: 0.1057 - accuracy: 0.9778 - val_loss: 0.2547 - val_accuracy: 0.9222 Epoch 20/50 12/12 [==============================] - 2s 182ms/step - loss: 0.1062 - accuracy: 0.9750 - val_loss: 0.2402 - val_accuracy: 0.9056 Epoch 21/50 12/12 [==============================] - 2s 158ms/step - loss: 0.0999 - accuracy: 0.9806 - val_loss: 0.2383 - val_accuracy: 0.9222 Epoch 22/50 12/12 [==============================] - 2s 187ms/step - loss: 0.0900 - accuracy: 0.9833 - val_loss: 0.2307 - val_accuracy: 0.9222 Epoch 23/50 12/12 [==============================] - 2s 159ms/step - loss: 0.0853 - accuracy: 0.9833 - val_loss: 0.2388 - val_accuracy: 0.9167 Epoch 24/50 12/12 [==============================] - 2s 159ms/step - loss: 0.0805 - accuracy: 0.9847 - val_loss: 0.2314 - val_accuracy: 0.9167 Epoch 25/50 12/12 [==============================] - 2s 158ms/step - loss: 0.0763 - accuracy: 0.9847 - val_loss: 0.2232 - val_accuracy: 0.9278 Epoch 26/50 12/12 [==============================] - 2s 181ms/step - loss: 0.0736 - accuracy: 0.9903 - val_loss: 0.2333 - val_accuracy: 0.9222 Epoch 27/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0716 - accuracy: 0.9931 - val_loss: 0.2300 - val_accuracy: 0.9222 Epoch 28/50 12/12 [==============================] - 2s 159ms/step - loss: 0.0673 - accuracy: 0.9875 - val_loss: 0.2323 - val_accuracy: 0.9111 Epoch 29/50 12/12 [==============================] - 2s 162ms/step - loss: 0.0576 - accuracy: 0.9944 - val_loss: 0.2205 - val_accuracy: 0.9167 Epoch 30/50 12/12 [==============================] - 2s 183ms/step - loss: 0.0559 - accuracy: 0.9944 - val_loss: 0.2247 - val_accuracy: 0.9278 Epoch 31/50 12/12 [==============================] - 2s 158ms/step - loss: 0.0552 - accuracy: 0.9931 - val_loss: 0.2246 - val_accuracy: 0.9222 Epoch 32/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0522 - accuracy: 0.9944 - val_loss: 0.2280 - val_accuracy: 0.9167 Epoch 33/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0481 - accuracy: 0.9944 - val_loss: 0.2128 - val_accuracy: 0.9167 Epoch 34/50 12/12 [==============================] - 2s 181ms/step - loss: 0.0448 - accuracy: 0.9958 - val_loss: 0.2164 - val_accuracy: 0.9167 Epoch 35/50 12/12 [==============================] - 2s 183ms/step - loss: 0.0418 - accuracy: 0.9958 - val_loss: 0.2153 - val_accuracy: 0.9167 Epoch 36/50 12/12 [==============================] - 2s 163ms/step - loss: 0.0388 - accuracy: 0.9972 - val_loss: 0.2233 - val_accuracy: 0.9111 Epoch 37/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0385 - accuracy: 0.9972 - val_loss: 0.2163 - val_accuracy: 0.9111 Epoch 38/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0368 - accuracy: 0.9986 - val_loss: 0.2198 - val_accuracy: 0.9278 Epoch 39/50 12/12 [==============================] - 2s 158ms/step - loss: 0.0379 - accuracy: 0.9944 - val_loss: 0.2309 - val_accuracy: 0.9167 Epoch 40/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0319 - accuracy: 0.9972 - val_loss: 0.2196 - val_accuracy: 0.9167 Epoch 41/50 12/12 [==============================] - 2s 159ms/step - loss: 0.0306 - accuracy: 1.0000 - val_loss: 0.2277 - val_accuracy: 0.9278 Epoch 42/50 12/12 [==============================] - 2s 163ms/step - loss: 0.0300 - accuracy: 0.9986 - val_loss: 0.2281 - val_accuracy: 0.9111 Epoch 43/50 12/12 [==============================] - 2s 161ms/step - loss: 0.0297 - accuracy: 0.9958 - val_loss: 0.2172 - val_accuracy: 0.9278 Epoch 44/50 12/12 [==============================] - 2s 157ms/step - loss: 0.0297 - accuracy: 1.0000 - val_loss: 0.2229 - val_accuracy: 0.9333 Epoch 45/50 12/12 [==============================] - 2s 158ms/step - loss: 0.0293 - accuracy: 1.0000 - val_loss: 0.2368 - val_accuracy: 0.9111 Epoch 46/50 12/12 [==============================] - 2s 160ms/step - loss: 0.0272 - accuracy: 1.0000 - val_loss: 0.2277 - val_accuracy: 0.9222 Epoch 47/50 12/12 [==============================] - 2s 184ms/step - loss: 0.0249 - accuracy: 1.0000 - val_loss: 0.2230 - val_accuracy: 0.9222 Epoch 48/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0236 - accuracy: 1.0000 - val_loss: 0.2203 - val_accuracy: 0.9222 Epoch 49/50 12/12 [==============================] - 2s 186ms/step - loss: 0.0214 - accuracy: 1.0000 - val_loss: 0.2229 - val_accuracy: 0.9111 Epoch 50/50 12/12 [==============================] - 2s 182ms/step - loss: 0.0215 - accuracy: 1.0000 - val_loss: 0.2396 - val_accuracy: 0.9111 8/8 [==============================] - 1s 68ms/step Epoch 1/50 6/6 [==============================] - 4s 426ms/step - loss: 1.2397 - accuracy: 0.4819 - val_loss: 1.0035 - val_accuracy: 0.7111 Epoch 2/50 6/6 [==============================] - 2s 317ms/step - loss: 0.8804 - accuracy: 0.7542 - val_loss: 0.7664 - val_accuracy: 0.7222 Epoch 3/50 6/6 [==============================] - 2s 322ms/step - loss: 0.6904 - accuracy: 0.7514 - val_loss: 0.6531 - val_accuracy: 0.7444 Epoch 4/50 6/6 [==============================] - 2s 373ms/step - loss: 0.5684 - accuracy: 0.8194 - val_loss: 0.5893 - val_accuracy: 0.7778 Epoch 5/50 6/6 [==============================] - 2s 372ms/step - loss: 0.4963 - accuracy: 0.8361 - val_loss: 0.5124 - val_accuracy: 0.7944 Epoch 6/50 6/6 [==============================] - 2s 371ms/step - loss: 0.4265 - accuracy: 0.8611 - val_loss: 0.4865 - val_accuracy: 0.8167 Epoch 7/50 6/6 [==============================] - 2s 319ms/step - loss: 0.3816 - accuracy: 0.8750 - val_loss: 0.4339 - val_accuracy: 0.8444 Epoch 8/50 6/6 [==============================] - 2s 324ms/step - loss: 0.3445 - accuracy: 0.8958 - val_loss: 0.4173 - val_accuracy: 0.8278 Epoch 9/50 6/6 [==============================] - 2s 324ms/step - loss: 0.3168 - accuracy: 0.8958 - val_loss: 0.3871 - val_accuracy: 0.8444 Epoch 10/50 6/6 [==============================] - 2s 385ms/step - loss: 0.2920 - accuracy: 0.9014 - val_loss: 0.3665 - val_accuracy: 0.8611 Epoch 11/50 6/6 [==============================] - 2s 379ms/step - loss: 0.2699 - accuracy: 0.9222 - val_loss: 0.3665 - val_accuracy: 0.8611 Epoch 12/50 6/6 [==============================] - 2s 323ms/step - loss: 0.2621 - accuracy: 0.9125 - val_loss: 0.3409 - val_accuracy: 0.8944 Epoch 13/50 6/6 [==============================] - 2s 326ms/step - loss: 0.2358 - accuracy: 0.9292 - val_loss: 0.3345 - val_accuracy: 0.8778 Epoch 14/50 6/6 [==============================] - 2s 327ms/step - loss: 0.2218 - accuracy: 0.9319 - val_loss: 0.3168 - val_accuracy: 0.8889 Epoch 15/50 6/6 [==============================] - 2s 328ms/step - loss: 0.2046 - accuracy: 0.9431 - val_loss: 0.3099 - val_accuracy: 0.8944 Epoch 16/50 6/6 [==============================] - 2s 379ms/step - loss: 0.1927 - accuracy: 0.9444 - val_loss: 0.3000 - val_accuracy: 0.9056 Epoch 17/50 6/6 [==============================] - 2s 382ms/step - loss: 0.1766 - accuracy: 0.9500 - val_loss: 0.2934 - val_accuracy: 0.8944 Epoch 18/50 6/6 [==============================] - 2s 315ms/step - loss: 0.1700 - accuracy: 0.9583 - val_loss: 0.2849 - val_accuracy: 0.8944 Epoch 19/50 6/6 [==============================] - 2s 368ms/step - loss: 0.1567 - accuracy: 0.9625 - val_loss: 0.2811 - val_accuracy: 0.8944 Epoch 20/50 6/6 [==============================] - 2s 319ms/step - loss: 0.1503 - accuracy: 0.9681 - val_loss: 0.2747 - val_accuracy: 0.8944 Epoch 21/50 6/6 [==============================] - 2s 370ms/step - loss: 0.1437 - accuracy: 0.9667 - val_loss: 0.2709 - val_accuracy: 0.9056 Epoch 22/50 6/6 [==============================] - 2s 364ms/step - loss: 0.1360 - accuracy: 0.9681 - val_loss: 0.2648 - val_accuracy: 0.9000 Epoch 23/50 6/6 [==============================] - 2s 328ms/step - loss: 0.1287 - accuracy: 0.9736 - val_loss: 0.2609 - val_accuracy: 0.9000 Epoch 24/50 6/6 [==============================] - 2s 331ms/step - loss: 0.1227 - accuracy: 0.9722 - val_loss: 0.2548 - val_accuracy: 0.9000 Epoch 25/50 6/6 [==============================] - 2s 315ms/step - loss: 0.1172 - accuracy: 0.9764 - val_loss: 0.2560 - val_accuracy: 0.9000 Epoch 26/50 6/6 [==============================] - 2s 372ms/step - loss: 0.1123 - accuracy: 0.9722 - val_loss: 0.2483 - val_accuracy: 0.9000 Epoch 27/50 6/6 [==============================] - 2s 372ms/step - loss: 0.1060 - accuracy: 0.9736 - val_loss: 0.2437 - val_accuracy: 0.9000 Epoch 28/50 6/6 [==============================] - 2s 366ms/step - loss: 0.0995 - accuracy: 0.9806 - val_loss: 0.2451 - val_accuracy: 0.9056 Epoch 29/50 6/6 [==============================] - 2s 365ms/step - loss: 0.0967 - accuracy: 0.9819 - val_loss: 0.2378 - val_accuracy: 0.9167 Epoch 30/50 6/6 [==============================] - 2s 376ms/step - loss: 0.0922 - accuracy: 0.9819 - val_loss: 0.2392 - val_accuracy: 0.9000 Epoch 31/50 6/6 [==============================] - 2s 322ms/step - loss: 0.0871 - accuracy: 0.9861 - val_loss: 0.2359 - val_accuracy: 0.9111 Epoch 32/50 6/6 [==============================] - 2s 362ms/step - loss: 0.0857 - accuracy: 0.9833 - val_loss: 0.2329 - val_accuracy: 0.9111 Epoch 33/50 6/6 [==============================] - 2s 367ms/step - loss: 0.0793 - accuracy: 0.9847 - val_loss: 0.2374 - val_accuracy: 0.9056 Epoch 34/50 6/6 [==============================] - 2s 367ms/step - loss: 0.0774 - accuracy: 0.9889 - val_loss: 0.2308 - val_accuracy: 0.9056 Epoch 35/50 6/6 [==============================] - 2s 365ms/step - loss: 0.0738 - accuracy: 0.9875 - val_loss: 0.2292 - val_accuracy: 0.9167 Epoch 36/50 6/6 [==============================] - 2s 313ms/step - loss: 0.0722 - accuracy: 0.9903 - val_loss: 0.2288 - val_accuracy: 0.9111 Epoch 37/50 6/6 [==============================] - 2s 375ms/step - loss: 0.0689 - accuracy: 0.9903 - val_loss: 0.2254 - val_accuracy: 0.9056 Epoch 38/50 6/6 [==============================] - 2s 372ms/step - loss: 0.0645 - accuracy: 0.9903 - val_loss: 0.2252 - val_accuracy: 0.9167 Epoch 39/50 6/6 [==============================] - 2s 369ms/step - loss: 0.0614 - accuracy: 0.9944 - val_loss: 0.2226 - val_accuracy: 0.9167 Epoch 40/50 6/6 [==============================] - 2s 316ms/step - loss: 0.0613 - accuracy: 0.9931 - val_loss: 0.2284 - val_accuracy: 0.9056 Epoch 41/50 6/6 [==============================] - 2s 311ms/step - loss: 0.0596 - accuracy: 0.9917 - val_loss: 0.2231 - val_accuracy: 0.9167 Epoch 42/50 6/6 [==============================] - 2s 315ms/step - loss: 0.0592 - accuracy: 0.9917 - val_loss: 0.2294 - val_accuracy: 0.9056 Epoch 43/50 6/6 [==============================] - 2s 367ms/step - loss: 0.0527 - accuracy: 0.9944 - val_loss: 0.2224 - val_accuracy: 0.9167 Epoch 44/50 6/6 [==============================] - 2s 336ms/step - loss: 0.0518 - accuracy: 0.9944 - val_loss: 0.2264 - val_accuracy: 0.9056 Epoch 45/50 6/6 [==============================] - 2s 369ms/step - loss: 0.0491 - accuracy: 0.9944 - val_loss: 0.2181 - val_accuracy: 0.9167 Epoch 46/50 6/6 [==============================] - 2s 368ms/step - loss: 0.0481 - accuracy: 0.9958 - val_loss: 0.2206 - val_accuracy: 0.9111 Epoch 47/50 6/6 [==============================] - 2s 319ms/step - loss: 0.0454 - accuracy: 0.9958 - val_loss: 0.2194 - val_accuracy: 0.9167 Epoch 48/50 6/6 [==============================] - 2s 318ms/step - loss: 0.0452 - accuracy: 0.9972 - val_loss: 0.2224 - val_accuracy: 0.9111 Epoch 49/50 6/6 [==============================] - 2s 372ms/step - loss: 0.0427 - accuracy: 0.9972 - val_loss: 0.2146 - val_accuracy: 0.9167 Epoch 50/50 6/6 [==============================] - 2s 373ms/step - loss: 0.0415 - accuracy: 0.9972 - val_loss: 0.2198 - val_accuracy: 0.9167 8/8 [==============================] - 1s 68ms/step
output_for_evaluation=pd.DataFrame(arry,columns=['Epochs','Batch Size', 'Training_accuracy', 'Training_loss', 'Validation_accuracy', 'Validation_loss', 'Accuracy'])
output_for_evaluation
| Epochs | Batch Size | Training_accuracy | Training_loss | Validation_accuracy | Validation_loss | Accuracy | |
|---|---|---|---|---|---|---|---|
| 0 | 5.0 | 16.0 | 0.850556 | 0.431194 | 0.853333 | 0.436082 | 0.906667 |
| 1 | 5.0 | 32.0 | 0.822222 | 0.509676 | 0.817778 | 0.481075 | 0.893333 |
| 2 | 5.0 | 64.0 | 0.781389 | 0.631091 | 0.787778 | 0.598430 | 0.888889 |
| 3 | 5.0 | 128.0 | 0.731944 | 0.766506 | 0.756667 | 0.694303 | 0.857778 |
| 4 | 10.0 | 16.0 | 0.902222 | 0.294061 | 0.866667 | 0.349559 | 0.933333 |
| 5 | 10.0 | 32.0 | 0.877778 | 0.358006 | 0.860000 | 0.394937 | 0.893333 |
| 6 | 10.0 | 64.0 | 0.833333 | 0.460020 | 0.828333 | 0.473029 | 0.893333 |
| 7 | 10.0 | 128.0 | 0.809583 | 0.557774 | 0.782222 | 0.567088 | 0.888889 |
| 8 | 20.0 | 16.0 | 0.951389 | 0.161430 | 0.903611 | 0.277583 | 0.915556 |
| 9 | 20.0 | 32.0 | 0.925764 | 0.231237 | 0.877778 | 0.335412 | 0.911111 |
| 10 | 20.0 | 64.0 | 0.905694 | 0.297759 | 0.856667 | 0.379958 | 0.928889 |
| 11 | 20.0 | 128.0 | 0.870694 | 0.392833 | 0.832778 | 0.446839 | 0.915556 |
| 12 | 50.0 | 16.0 | 0.977194 | 0.079492 | 0.909000 | 0.268689 | 0.928889 |
| 13 | 50.0 | 32.0 | 0.970278 | 0.106160 | 0.903000 | 0.268711 | 0.920000 |
| 14 | 50.0 | 64.0 | 0.956611 | 0.151825 | 0.896889 | 0.287919 | 0.924444 |
| 15 | 50.0 | 128.0 | 0.941611 | 0.201187 | 0.882222 | 0.315065 | 0.928889 |
import matplotlib.pyplot as plt
# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_loss = output_for_evaluation['Training_loss']
base_validation_loss = output_for_evaluation['Validation_loss']
# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'training_loss': base_training_loss[idx],
'validation_loss': base_validation_loss[idx]
}
# Create subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for m, (batch_size, data) in enumerate(grouped_data.items()):
ax = axes[m]
ax.plot(data['epochs'], data['training_loss'], marker='o', label=f'Training Loss (Batch Size {batch_size})')
ax.plot(data['epochs'], data['validation_loss'], marker='o', label=f'Validation Loss (Batch Size {batch_size})')
ax.set_xlabel('Epochs')
ax.set_ylabel('Loss')
ax.set_title(f'Batch Size {batch_size}')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()
import matplotlib.pyplot as plt
# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_accuracy = output_for_evaluation['Training_accuracy']
base_validation_accuracy = output_for_evaluation['Validation_accuracy']
base_test_accuracy = output_for_evaluation['Accuracy']
# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'training_accuracy': base_training_accuracy[idx],
'validation_accuracy': base_validation_accuracy[idx],
'test_accuracy': base_test_accuracy[idx]
}
# Create subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for m, (batch_size, data) in enumerate(grouped_data.items()):
ax = axes[m]
ax.plot(data['epochs'], data['training_accuracy'], marker='o', label=f'Training Accuracy (Batch Size {batch_size})')
ax.plot(data['epochs'], data['validation_accuracy'], marker='o', label=f'Validation Accuracy (Batch Size {batch_size})')
ax.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size})')
ax.set_xlabel('Epochs')
ax.set_ylabel('Accuracy')
ax.set_title(f'Batch Size {batch_size}')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()
Batch Size = 16:
Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Slight increases.
Test Accuracy: Slight increases.
Interpretation: This behavior suggests that the model may be overfitting to the training data. The initial higher training accuracy indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to memorize the training samples and becomes too specialized, resulting in a minized increase in validation and test accuracies. The validation and test accuracies indicate that the model's ability to generalize to unseen data diminishes over time. This overfitting behavior could be an indication that the model is too complex.
Batch Size = 32:
Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Slight increases.
Interpretation: Similar to Batch Size = 16, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases. This could be an indication that the model is too complex.
Batch Size = 64:
Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Decreases.
Interpretation: Similar to Batch Sizes 16 and 32, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases.
Batch Size = 128:
Observation
Training Accuracy: Higher than validation accuracy from the beginning. Rapidly increases as epochs increase.
Validation Accuracy: Increases.
Test Accuracy: Slight increases.
Interpretation: Similar to Batch Sizes 16, 32, and 64, this behavior suggests that the model may be overfitting to the training data. The higher training accuracy from the beginning indicates that the model is able to fit well to the training data. However, as the number of epochs increases, the model starts to overfit and its performance on unseen validation and test data decreases.
import matplotlib.pyplot as plt
# Extract the data for visualization
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_test_accuracy = output_for_evaluation['Accuracy']
# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'test_accuracy': base_test_accuracy[idx]
}
# Create the plot
plt.figure(figsize=(10, 6))
for batch_size, data in grouped_data.items():
plt.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size}')
plt.xlabel('Epochs')
plt.ylabel('Test Accuracy')
plt.title('Test Accuracy vs. Epochs for Different Batch Sizes')
plt.legend()
plt.grid(True)
plt.show()
The above plots indicates several interesting phenomenons.
First, from the plots regarding accuracy, loss from the training and validation set, it might well indicate a potential issue of overfitting at almost every combination of batch and epoches.
In addition, though the test accurracy still looks great for until epoch=50, it is still worthy to note its potential diminishing trend as epoch increases further.
Therefore, with the observations in mind, in appears that, regardless of the batch size and epochs numbers, the base model in general is overfitting , where it fits the model too well and captures excessive complexities and nuances present in the data, starting to lead to a capture of excessive complex relationship within the training examples, as the training accuracy is almost larger than the testing accuracy
Some techniques can be implemented here in this case:
def get_outputs(combinations,X,y,modelling,df):
arry=np.zeros((len(combinations),7))
for m in range(len(combinations)):
arry[m][0]=combinations[m][0]
arry[m][1]=combinations[m][1]
preliminary_model_output=list(modelling(X,y,df,combinations[m][0],combinations[m][1]))
arry[m][2]=np.mean(preliminary_model_output[0])
arry[m][3]=np.mean(preliminary_model_output[1])
arry[m][4]=np.mean(preliminary_model_output[2])
arry[m][5]=np.mean(preliminary_model_output[3])
arry[m][6]=preliminary_model_output[4]
output_for_evaluation=pd.DataFrame(arry,columns=['Epochs','Batch Size', 'Training_accuracy', 'Training_loss', 'Validation_accuracy', 'Validation_loss', 'Accuracy'])
return output_for_evaluation
import matplotlib.pyplot as plt
def plot_loss(output_for_evaluation):
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_loss = output_for_evaluation['Training_loss']
base_validation_loss = output_for_evaluation['Validation_loss']
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'training_loss': base_training_loss[idx],
'validation_loss': base_validation_loss[idx]
}
# Create subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for m, (batch_size, data) in enumerate(grouped_data.items()):
ax = axes[m]
ax.plot(data['epochs'], data['training_loss'], marker='o', label=f'Training Loss (Batch Size {batch_size})')
ax.plot(data['epochs'], data['validation_loss'], marker='o', label=f'Validation Loss (Batch Size {batch_size})')
ax.set_xlabel('Epochs')
ax.set_ylabel('Loss')
ax.set_title(f'Batch Size {batch_size}')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()
import matplotlib.pyplot as plt
def plot_accuracy(output_for_evaluation):
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_training_accuracy = output_for_evaluation['Training_accuracy']
base_validation_accuracy = output_for_evaluation['Validation_accuracy']
base_test_accuracy = output_for_evaluation['Accuracy']
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'training_accuracy': base_training_accuracy[idx],
'validation_accuracy': base_validation_accuracy[idx],
'test_accuracy': base_test_accuracy[idx]
}
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for m, (batch_size, data) in enumerate(grouped_data.items()):
ax = axes[m]
ax.plot(data['epochs'], data['training_accuracy'], marker='o', label=f'Training Accuracy (Batch Size {batch_size})')
ax.plot(data['epochs'], data['validation_accuracy'], marker='o', label=f'Validation Accuracy (Batch Size {batch_size})')
ax.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size})')
ax.set_xlabel('Epochs')
ax.set_ylabel('Accuracy')
ax.set_title(f'Batch Size {batch_size}')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.show()
import matplotlib.pyplot as plt
# Extract the data for visualization
def plot_test_accuracy(output_for_evaluation):
base_epochs = output_for_evaluation['Epochs']
base_batch_sizes = output_for_evaluation['Batch Size']
base_test_accuracy = output_for_evaluation['Accuracy']
# Group the data by batch size
batch_sizes = set(base_batch_sizes)
grouped_data = {}
for batch_size in batch_sizes:
idx = base_batch_sizes == batch_size
grouped_data[batch_size] = {
'epochs': base_epochs[idx],
'test_accuracy': base_test_accuracy[idx]
}
# Create the plot
plt.figure(figsize=(10, 6))
for batch_size, data in grouped_data.items():
plt.plot(data['epochs'], data['test_accuracy'], marker='o', label=f'Test Accuracy (Batch Size {batch_size}')
plt.xlabel('Epochs')
plt.ylabel('Test Accuracy')
plt.title('Test Accuracy vs. Epochs for Different Batch Sizes')
plt.legend()
plt.grid(True)
plt.show()
from tensorflow.keras.layers import Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
def enhanced_vgg_16_modelling(X, y, df, epochs, batch_size):
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
num_labels = len(np.unique(df['label']))
y_train = np.eye(num_labels)[Y_train]
y_test = np.eye(num_labels)[Y_test]
y_val = np.eye(num_labels)[Y_val]
# Data augmentation
train_datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest'
)
train_datagen.fit(X_train)
# Initialize the base model
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
for layer in base_model.layers:
layer.trainable = False
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu', kernel_regularizer=l2(0.001))(x) # Adding L2 regularization
x = Dropout(0.5)(x) # Adding Dropout layer
predictions = Dense(num_labels, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
# Compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Early stopping
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)
# Fit the model with augmented data
history = model.fit(
train_datagen.flow(X_train, y_train, batch_size=batch_size),
epochs=epochs,
validation_data=(X_val, y_val),
callbacks=[early_stop]
)
training_accuracy = history.history['accuracy']
training_loss = history.history['loss']
validation_accuracy = history.history['val_accuracy']
validation_loss = history.history['val_loss']
test_predictions = model.predict(X_test)
predicted_labels = np.argmax(test_predictions, axis=1)
accuracy = np.mean(predicted_labels == Y_test)
return training_accuracy, training_loss, validation_accuracy, validation_loss, accuracy
enhanced_model_output=get_outputs(combinations,X,y,enhanced_vgg_16_modelling, df)
Epoch 1/5 45/45 [==============================] - 7s 126ms/step - loss: 1.4423 - accuracy: 0.5292 - val_loss: 1.0219 - val_accuracy: 0.6944 Epoch 2/5 45/45 [==============================] - 4s 99ms/step - loss: 0.8401 - accuracy: 0.7778 - val_loss: 0.7325 - val_accuracy: 0.8167 Epoch 3/5 45/45 [==============================] - 6s 124ms/step - loss: 0.7139 - accuracy: 0.8167 - val_loss: 0.6577 - val_accuracy: 0.8333 Epoch 4/5 45/45 [==============================] - 4s 99ms/step - loss: 0.6180 - accuracy: 0.8431 - val_loss: 0.6075 - val_accuracy: 0.8333 Epoch 5/5 45/45 [==============================] - 5s 106ms/step - loss: 0.5582 - accuracy: 0.8514 - val_loss: 0.5604 - val_accuracy: 0.8722 8/8 [==============================] - 1s 62ms/step Epoch 1/5 23/23 [==============================] - 8s 274ms/step - loss: 1.5723 - accuracy: 0.5069 - val_loss: 1.1416 - val_accuracy: 0.7333 Epoch 2/5 23/23 [==============================] - 5s 233ms/step - loss: 1.0055 - accuracy: 0.7528 - val_loss: 0.8652 - val_accuracy: 0.7778 Epoch 3/5 23/23 [==============================] - 4s 182ms/step - loss: 0.8177 - accuracy: 0.7806 - val_loss: 0.7376 - val_accuracy: 0.8056 Epoch 4/5 23/23 [==============================] - 5s 220ms/step - loss: 0.6874 - accuracy: 0.8319 - val_loss: 0.6767 - val_accuracy: 0.8444 Epoch 5/5 23/23 [==============================] - 5s 203ms/step - loss: 0.6612 - accuracy: 0.8264 - val_loss: 0.6340 - val_accuracy: 0.8222 8/8 [==============================] - 1s 61ms/step Epoch 1/5 12/12 [==============================] - 7s 406ms/step - loss: 1.7766 - accuracy: 0.3750 - val_loss: 1.3443 - val_accuracy: 0.6833 Epoch 2/5 12/12 [==============================] - 5s 375ms/step - loss: 1.2563 - accuracy: 0.6639 - val_loss: 1.0535 - val_accuracy: 0.7333 Epoch 3/5 12/12 [==============================] - 5s 435ms/step - loss: 1.0087 - accuracy: 0.7486 - val_loss: 0.9398 - val_accuracy: 0.7611 Epoch 4/5 12/12 [==============================] - 4s 348ms/step - loss: 0.8493 - accuracy: 0.7903 - val_loss: 0.8019 - val_accuracy: 0.7667 Epoch 5/5 12/12 [==============================] - 4s 351ms/step - loss: 0.7459 - accuracy: 0.8250 - val_loss: 0.7304 - val_accuracy: 0.8167 8/8 [==============================] - 1s 62ms/step Epoch 1/5 6/6 [==============================] - 6s 707ms/step - loss: 1.7677 - accuracy: 0.4306 - val_loss: 1.4537 - val_accuracy: 0.7222 Epoch 2/5 6/6 [==============================] - 5s 828ms/step - loss: 1.4377 - accuracy: 0.5708 - val_loss: 1.2555 - val_accuracy: 0.7222 Epoch 3/5 6/6 [==============================] - 5s 827ms/step - loss: 1.2179 - accuracy: 0.6889 - val_loss: 1.0732 - val_accuracy: 0.7500 Epoch 4/5 6/6 [==============================] - 5s 752ms/step - loss: 1.0602 - accuracy: 0.7486 - val_loss: 0.9525 - val_accuracy: 0.7722 Epoch 5/5 6/6 [==============================] - 5s 877ms/step - loss: 0.9383 - accuracy: 0.7528 - val_loss: 0.8658 - val_accuracy: 0.7889 8/8 [==============================] - 1s 62ms/step Epoch 1/10 45/45 [==============================] - 6s 106ms/step - loss: 1.3687 - accuracy: 0.5458 - val_loss: 0.9319 - val_accuracy: 0.7500 Epoch 2/10 45/45 [==============================] - 5s 103ms/step - loss: 0.8634 - accuracy: 0.7639 - val_loss: 0.7619 - val_accuracy: 0.7889 Epoch 3/10 45/45 [==============================] - 5s 103ms/step - loss: 0.6836 - accuracy: 0.8333 - val_loss: 0.6579 - val_accuracy: 0.8333 Epoch 4/10 45/45 [==============================] - 5s 114ms/step - loss: 0.6126 - accuracy: 0.8472 - val_loss: 0.5948 - val_accuracy: 0.8389 Epoch 5/10 45/45 [==============================] - 6s 131ms/step - loss: 0.5482 - accuracy: 0.8667 - val_loss: 0.5635 - val_accuracy: 0.8278 Epoch 6/10 45/45 [==============================] - 5s 107ms/step - loss: 0.5660 - accuracy: 0.8417 - val_loss: 0.5192 - val_accuracy: 0.8389 Epoch 7/10 45/45 [==============================] - 5s 107ms/step - loss: 0.4965 - accuracy: 0.8792 - val_loss: 0.4790 - val_accuracy: 0.8722 Epoch 8/10 45/45 [==============================] - 4s 99ms/step - loss: 0.4589 - accuracy: 0.8889 - val_loss: 0.5504 - val_accuracy: 0.8722 Epoch 9/10 45/45 [==============================] - 6s 129ms/step - loss: 0.4612 - accuracy: 0.8875 - val_loss: 0.5352 - val_accuracy: 0.8500 Epoch 10/10 45/45 [==============================] - 5s 105ms/step - loss: 0.4624 - accuracy: 0.8917 - val_loss: 0.4244 - val_accuracy: 0.8944 8/8 [==============================] - 1s 63ms/step Epoch 1/10 23/23 [==============================] - 7s 250ms/step - loss: 1.5571 - accuracy: 0.4958 - val_loss: 1.1356 - val_accuracy: 0.7278 Epoch 2/10 23/23 [==============================] - 5s 195ms/step - loss: 1.0057 - accuracy: 0.7542 - val_loss: 0.8573 - val_accuracy: 0.7667 Epoch 3/10 23/23 [==============================] - 5s 196ms/step - loss: 0.7789 - accuracy: 0.7958 - val_loss: 0.7211 - val_accuracy: 0.8056 Epoch 4/10 23/23 [==============================] - 5s 198ms/step - loss: 0.6907 - accuracy: 0.8139 - val_loss: 0.6574 - val_accuracy: 0.8222 Epoch 5/10 23/23 [==============================] - 5s 197ms/step - loss: 0.6132 - accuracy: 0.8542 - val_loss: 0.6019 - val_accuracy: 0.8111 Epoch 6/10 23/23 [==============================] - 6s 245ms/step - loss: 0.5631 - accuracy: 0.8667 - val_loss: 0.5720 - val_accuracy: 0.8833 Epoch 7/10 23/23 [==============================] - 4s 184ms/step - loss: 0.5488 - accuracy: 0.8500 - val_loss: 0.5338 - val_accuracy: 0.8889 Epoch 8/10 23/23 [==============================] - 5s 197ms/step - loss: 0.5223 - accuracy: 0.8597 - val_loss: 0.5129 - val_accuracy: 0.8444 Epoch 9/10 23/23 [==============================] - 5s 230ms/step - loss: 0.4888 - accuracy: 0.8667 - val_loss: 0.4908 - val_accuracy: 0.8389 Epoch 10/10 23/23 [==============================] - 4s 183ms/step - loss: 0.4531 - accuracy: 0.8958 - val_loss: 0.4640 - val_accuracy: 0.9111 8/8 [==============================] - 1s 61ms/step Epoch 1/10 12/12 [==============================] - 8s 490ms/step - loss: 1.7174 - accuracy: 0.4194 - val_loss: 1.3180 - val_accuracy: 0.6944 Epoch 2/10 12/12 [==============================] - 4s 345ms/step - loss: 1.2307 - accuracy: 0.6917 - val_loss: 1.0439 - val_accuracy: 0.7389 Epoch 3/10 12/12 [==============================] - 6s 473ms/step - loss: 0.9971 - accuracy: 0.7486 - val_loss: 0.8871 - val_accuracy: 0.7556 Epoch 4/10 12/12 [==============================] - 4s 345ms/step - loss: 0.8390 - accuracy: 0.7806 - val_loss: 0.7748 - val_accuracy: 0.8000 Epoch 5/10 12/12 [==============================] - 4s 343ms/step - loss: 0.7378 - accuracy: 0.8097 - val_loss: 0.7110 - val_accuracy: 0.8278 Epoch 6/10 12/12 [==============================] - 5s 395ms/step - loss: 0.6727 - accuracy: 0.8361 - val_loss: 0.6694 - val_accuracy: 0.8222 Epoch 7/10 12/12 [==============================] - 4s 342ms/step - loss: 0.6284 - accuracy: 0.8375 - val_loss: 0.6271 - val_accuracy: 0.8222 Epoch 8/10 12/12 [==============================] - 5s 444ms/step - loss: 0.5962 - accuracy: 0.8583 - val_loss: 0.6108 - val_accuracy: 0.8667 Epoch 9/10 12/12 [==============================] - 4s 395ms/step - loss: 0.5601 - accuracy: 0.8750 - val_loss: 0.5697 - val_accuracy: 0.8333 Epoch 10/10 12/12 [==============================] - 6s 452ms/step - loss: 0.5548 - accuracy: 0.8681 - val_loss: 0.5544 - val_accuracy: 0.8667 8/8 [==============================] - 1s 63ms/step Epoch 1/10 6/6 [==============================] - 6s 784ms/step - loss: 1.8090 - accuracy: 0.3583 - val_loss: 1.5128 - val_accuracy: 0.6722 Epoch 2/10 6/6 [==============================] - 5s 775ms/step - loss: 1.4508 - accuracy: 0.6083 - val_loss: 1.2431 - val_accuracy: 0.7222 Epoch 3/10 6/6 [==============================] - 6s 951ms/step - loss: 1.1953 - accuracy: 0.7194 - val_loss: 1.0985 - val_accuracy: 0.7556 Epoch 4/10 6/6 [==============================] - 4s 717ms/step - loss: 1.0574 - accuracy: 0.7375 - val_loss: 0.9970 - val_accuracy: 0.7444 Epoch 5/10 6/6 [==============================] - 5s 871ms/step - loss: 0.9504 - accuracy: 0.7667 - val_loss: 0.8799 - val_accuracy: 0.7833 Epoch 6/10 6/6 [==============================] - 5s 746ms/step - loss: 0.8426 - accuracy: 0.7958 - val_loss: 0.8397 - val_accuracy: 0.8000 Epoch 7/10 6/6 [==============================] - 4s 731ms/step - loss: 0.7667 - accuracy: 0.8056 - val_loss: 0.7610 - val_accuracy: 0.8222 Epoch 8/10 6/6 [==============================] - 6s 971ms/step - loss: 0.7165 - accuracy: 0.8333 - val_loss: 0.7210 - val_accuracy: 0.8278 Epoch 9/10 6/6 [==============================] - 4s 704ms/step - loss: 0.6504 - accuracy: 0.8500 - val_loss: 0.6802 - val_accuracy: 0.8278 Epoch 10/10 6/6 [==============================] - 4s 718ms/step - loss: 0.6150 - accuracy: 0.8708 - val_loss: 0.6589 - val_accuracy: 0.8333 8/8 [==============================] - 1s 63ms/step Epoch 1/20 45/45 [==============================] - 6s 111ms/step - loss: 1.3441 - accuracy: 0.5778 - val_loss: 0.9094 - val_accuracy: 0.7500 Epoch 2/20 45/45 [==============================] - 5s 109ms/step - loss: 0.8393 - accuracy: 0.7861 - val_loss: 0.7570 - val_accuracy: 0.7778 Epoch 3/20 45/45 [==============================] - 5s 114ms/step - loss: 0.6740 - accuracy: 0.8319 - val_loss: 0.6655 - val_accuracy: 0.8333 Epoch 4/20 45/45 [==============================] - 5s 104ms/step - loss: 0.6221 - accuracy: 0.8333 - val_loss: 0.5990 - val_accuracy: 0.8389 Epoch 5/20 45/45 [==============================] - 6s 131ms/step - loss: 0.5497 - accuracy: 0.8611 - val_loss: 0.5204 - val_accuracy: 0.8556 Epoch 6/20 45/45 [==============================] - 5s 101ms/step - loss: 0.5195 - accuracy: 0.8667 - val_loss: 0.5118 - val_accuracy: 0.9000 Epoch 7/20 45/45 [==============================] - 5s 118ms/step - loss: 0.4740 - accuracy: 0.8847 - val_loss: 0.4913 - val_accuracy: 0.8778 Epoch 8/20 45/45 [==============================] - 6s 124ms/step - loss: 0.4624 - accuracy: 0.8986 - val_loss: 0.5076 - val_accuracy: 0.8889 Epoch 9/20 45/45 [==============================] - 5s 105ms/step - loss: 0.4394 - accuracy: 0.9014 - val_loss: 0.4470 - val_accuracy: 0.9056 Epoch 10/20 45/45 [==============================] - 6s 126ms/step - loss: 0.3999 - accuracy: 0.9056 - val_loss: 0.4563 - val_accuracy: 0.9167 Epoch 11/20 45/45 [==============================] - 5s 104ms/step - loss: 0.4170 - accuracy: 0.9000 - val_loss: 0.4174 - val_accuracy: 0.9111 Epoch 12/20 45/45 [==============================] - 6s 127ms/step - loss: 0.4203 - accuracy: 0.8944 - val_loss: 0.3995 - val_accuracy: 0.9278 Epoch 13/20 45/45 [==============================] - 4s 99ms/step - loss: 0.3960 - accuracy: 0.9028 - val_loss: 0.4450 - val_accuracy: 0.9111 Epoch 14/20 45/45 [==============================] - 5s 103ms/step - loss: 0.3819 - accuracy: 0.9056 - val_loss: 0.4697 - val_accuracy: 0.8889 Epoch 15/20 45/45 [==============================] - 6s 130ms/step - loss: 0.3930 - accuracy: 0.9028 - val_loss: 0.3664 - val_accuracy: 0.9222 Epoch 16/20 45/45 [==============================] - 5s 104ms/step - loss: 0.4065 - accuracy: 0.8944 - val_loss: 0.4271 - val_accuracy: 0.9000 Epoch 17/20 45/45 [==============================] - 6s 145ms/step - loss: 0.4021 - accuracy: 0.8972 - val_loss: 0.3695 - val_accuracy: 0.9222 Epoch 18/20 45/45 [==============================] - 5s 103ms/step - loss: 0.3808 - accuracy: 0.9083 - val_loss: 0.3900 - val_accuracy: 0.9111 8/8 [==============================] - 1s 62ms/step Epoch 1/20 23/23 [==============================] - 7s 211ms/step - loss: 1.5536 - accuracy: 0.5056 - val_loss: 1.0878 - val_accuracy: 0.7056 Epoch 2/20 23/23 [==============================] - 5s 199ms/step - loss: 0.9795 - accuracy: 0.7486 - val_loss: 0.8440 - val_accuracy: 0.7500 Epoch 3/20 23/23 [==============================] - 6s 247ms/step - loss: 0.7777 - accuracy: 0.8028 - val_loss: 0.7578 - val_accuracy: 0.7889 Epoch 4/20 23/23 [==============================] - 5s 197ms/step - loss: 0.6972 - accuracy: 0.8208 - val_loss: 0.6748 - val_accuracy: 0.8111 Epoch 5/20 23/23 [==============================] - 5s 203ms/step - loss: 0.6451 - accuracy: 0.8333 - val_loss: 0.6256 - val_accuracy: 0.8222 Epoch 6/20 23/23 [==============================] - 5s 195ms/step - loss: 0.5677 - accuracy: 0.8500 - val_loss: 0.6469 - val_accuracy: 0.7944 Epoch 7/20 23/23 [==============================] - 5s 197ms/step - loss: 0.5499 - accuracy: 0.8556 - val_loss: 0.5565 - val_accuracy: 0.8889 Epoch 8/20 23/23 [==============================] - 5s 236ms/step - loss: 0.5146 - accuracy: 0.8583 - val_loss: 0.5045 - val_accuracy: 0.8667 Epoch 9/20 23/23 [==============================] - 4s 183ms/step - loss: 0.4889 - accuracy: 0.8806 - val_loss: 0.5078 - val_accuracy: 0.9000 Epoch 10/20 23/23 [==============================] - 5s 205ms/step - loss: 0.4868 - accuracy: 0.8722 - val_loss: 0.4729 - val_accuracy: 0.8556 Epoch 11/20 23/23 [==============================] - 5s 204ms/step - loss: 0.4566 - accuracy: 0.8903 - val_loss: 0.4571 - val_accuracy: 0.8722 Epoch 12/20 23/23 [==============================] - 4s 198ms/step - loss: 0.4201 - accuracy: 0.9000 - val_loss: 0.4891 - val_accuracy: 0.8944 Epoch 13/20 23/23 [==============================] - 5s 237ms/step - loss: 0.4411 - accuracy: 0.8972 - val_loss: 0.4351 - val_accuracy: 0.9111 Epoch 14/20 23/23 [==============================] - 5s 199ms/step - loss: 0.4384 - accuracy: 0.8847 - val_loss: 0.4336 - val_accuracy: 0.9056 Epoch 15/20 23/23 [==============================] - 5s 213ms/step - loss: 0.4248 - accuracy: 0.8958 - val_loss: 0.4222 - val_accuracy: 0.9111 Epoch 16/20 23/23 [==============================] - 5s 212ms/step - loss: 0.3947 - accuracy: 0.9056 - val_loss: 0.4231 - val_accuracy: 0.8944 Epoch 17/20 23/23 [==============================] - 5s 195ms/step - loss: 0.3878 - accuracy: 0.9028 - val_loss: 0.4048 - val_accuracy: 0.9056 Epoch 18/20 23/23 [==============================] - 6s 245ms/step - loss: 0.3744 - accuracy: 0.9083 - val_loss: 0.4239 - val_accuracy: 0.9000 Epoch 19/20 23/23 [==============================] - 4s 183ms/step - loss: 0.3701 - accuracy: 0.9069 - val_loss: 0.4356 - val_accuracy: 0.9056 Epoch 20/20 23/23 [==============================] - 6s 248ms/step - loss: 0.3466 - accuracy: 0.9153 - val_loss: 0.4184 - val_accuracy: 0.9111 8/8 [==============================] - 1s 62ms/step Epoch 1/20 12/12 [==============================] - 7s 399ms/step - loss: 1.6945 - accuracy: 0.4583 - val_loss: 1.2946 - val_accuracy: 0.7167 Epoch 2/20 12/12 [==============================] - 4s 346ms/step - loss: 1.1997 - accuracy: 0.7125 - val_loss: 1.0362 - val_accuracy: 0.7833 Epoch 3/20 12/12 [==============================] - 5s 448ms/step - loss: 0.9631 - accuracy: 0.7569 - val_loss: 0.8755 - val_accuracy: 0.7889 Epoch 4/20 12/12 [==============================] - 4s 354ms/step - loss: 0.8480 - accuracy: 0.7847 - val_loss: 0.7903 - val_accuracy: 0.7833 Epoch 5/20 12/12 [==============================] - 4s 371ms/step - loss: 0.7519 - accuracy: 0.8222 - val_loss: 0.7076 - val_accuracy: 0.8278 Epoch 6/20 12/12 [==============================] - 5s 460ms/step - loss: 0.6758 - accuracy: 0.8278 - val_loss: 0.6579 - val_accuracy: 0.8167 Epoch 7/20 12/12 [==============================] - 5s 377ms/step - loss: 0.6455 - accuracy: 0.8347 - val_loss: 0.6332 - val_accuracy: 0.8167 Epoch 8/20 12/12 [==============================] - 5s 384ms/step - loss: 0.5652 - accuracy: 0.8764 - val_loss: 0.6125 - val_accuracy: 0.8278 Epoch 9/20 12/12 [==============================] - 5s 408ms/step - loss: 0.5531 - accuracy: 0.8681 - val_loss: 0.5847 - val_accuracy: 0.8611 Epoch 10/20 12/12 [==============================] - 5s 378ms/step - loss: 0.5297 - accuracy: 0.8847 - val_loss: 0.5471 - val_accuracy: 0.8444 Epoch 11/20 12/12 [==============================] - 5s 444ms/step - loss: 0.4896 - accuracy: 0.8944 - val_loss: 0.5276 - val_accuracy: 0.8500 Epoch 12/20 12/12 [==============================] - 4s 378ms/step - loss: 0.4838 - accuracy: 0.8833 - val_loss: 0.5011 - val_accuracy: 0.8778 Epoch 13/20 12/12 [==============================] - 6s 473ms/step - loss: 0.4819 - accuracy: 0.8736 - val_loss: 0.5100 - val_accuracy: 0.8556 Epoch 14/20 12/12 [==============================] - 5s 376ms/step - loss: 0.4570 - accuracy: 0.8944 - val_loss: 0.4942 - val_accuracy: 0.8667 Epoch 15/20 12/12 [==============================] - 5s 428ms/step - loss: 0.4508 - accuracy: 0.8958 - val_loss: 0.4607 - val_accuracy: 0.8889 Epoch 16/20 12/12 [==============================] - 6s 466ms/step - loss: 0.4254 - accuracy: 0.9097 - val_loss: 0.5220 - val_accuracy: 0.8944 Epoch 17/20 12/12 [==============================] - 4s 352ms/step - loss: 0.4676 - accuracy: 0.8833 - val_loss: 0.4547 - val_accuracy: 0.9111 Epoch 18/20 12/12 [==============================] - 5s 459ms/step - loss: 0.4255 - accuracy: 0.9056 - val_loss: 0.4349 - val_accuracy: 0.8944 Epoch 19/20 12/12 [==============================] - 5s 403ms/step - loss: 0.4007 - accuracy: 0.8917 - val_loss: 0.4243 - val_accuracy: 0.9222 Epoch 20/20 12/12 [==============================] - 5s 392ms/step - loss: 0.3865 - accuracy: 0.9194 - val_loss: 0.4213 - val_accuracy: 0.9278 8/8 [==============================] - 1s 62ms/step Epoch 1/20 6/6 [==============================] - 7s 986ms/step - loss: 1.7457 - accuracy: 0.4125 - val_loss: 1.4272 - val_accuracy: 0.6722 Epoch 2/20 6/6 [==============================] - 4s 702ms/step - loss: 1.4096 - accuracy: 0.6153 - val_loss: 1.2239 - val_accuracy: 0.7111 Epoch 3/20 6/6 [==============================] - 4s 693ms/step - loss: 1.1605 - accuracy: 0.7347 - val_loss: 1.0277 - val_accuracy: 0.7500 Epoch 4/20 6/6 [==============================] - 6s 1s/step - loss: 1.0131 - accuracy: 0.7583 - val_loss: 0.9466 - val_accuracy: 0.7667 Epoch 5/20 6/6 [==============================] - 5s 767ms/step - loss: 0.9061 - accuracy: 0.7806 - val_loss: 0.8452 - val_accuracy: 0.8000 Epoch 6/20 6/6 [==============================] - 5s 759ms/step - loss: 0.8189 - accuracy: 0.8111 - val_loss: 0.7871 - val_accuracy: 0.8167 Epoch 7/20 6/6 [==============================] - 5s 762ms/step - loss: 0.7379 - accuracy: 0.8375 - val_loss: 0.7228 - val_accuracy: 0.8222 Epoch 8/20 6/6 [==============================] - 5s 747ms/step - loss: 0.7007 - accuracy: 0.8236 - val_loss: 0.7027 - val_accuracy: 0.8278 Epoch 9/20 6/6 [==============================] - 6s 967ms/step - loss: 0.6563 - accuracy: 0.8611 - val_loss: 0.6513 - val_accuracy: 0.8333 Epoch 10/20 6/6 [==============================] - 4s 771ms/step - loss: 0.6285 - accuracy: 0.8653 - val_loss: 0.6267 - val_accuracy: 0.8444 Epoch 11/20 6/6 [==============================] - 4s 705ms/step - loss: 0.5992 - accuracy: 0.8528 - val_loss: 0.6041 - val_accuracy: 0.8667 Epoch 12/20 6/6 [==============================] - 5s 923ms/step - loss: 0.5600 - accuracy: 0.8792 - val_loss: 0.5826 - val_accuracy: 0.8667 Epoch 13/20 6/6 [==============================] - 4s 705ms/step - loss: 0.5435 - accuracy: 0.8833 - val_loss: 0.5578 - val_accuracy: 0.8833 Epoch 14/20 6/6 [==============================] - 5s 778ms/step - loss: 0.5267 - accuracy: 0.8736 - val_loss: 0.5480 - val_accuracy: 0.8722 Epoch 15/20 6/6 [==============================] - 5s 763ms/step - loss: 0.4979 - accuracy: 0.8819 - val_loss: 0.5273 - val_accuracy: 0.8889 Epoch 16/20 6/6 [==============================] - 5s 745ms/step - loss: 0.4927 - accuracy: 0.8861 - val_loss: 0.5243 - val_accuracy: 0.8722 Epoch 17/20 6/6 [==============================] - 6s 950ms/step - loss: 0.4763 - accuracy: 0.8958 - val_loss: 0.5082 - val_accuracy: 0.8833 Epoch 18/20 6/6 [==============================] - 5s 784ms/step - loss: 0.4703 - accuracy: 0.8986 - val_loss: 0.4927 - val_accuracy: 0.9000 Epoch 19/20 6/6 [==============================] - 5s 794ms/step - loss: 0.4585 - accuracy: 0.8972 - val_loss: 0.4915 - val_accuracy: 0.8889 Epoch 20/20 6/6 [==============================] - 5s 740ms/step - loss: 0.4362 - accuracy: 0.9097 - val_loss: 0.4684 - val_accuracy: 0.9111 8/8 [==============================] - 1s 61ms/step Epoch 1/50 45/45 [==============================] - 7s 128ms/step - loss: 1.3826 - accuracy: 0.5806 - val_loss: 0.9677 - val_accuracy: 0.7389 Epoch 2/50 45/45 [==============================] - 4s 99ms/step - loss: 0.8441 - accuracy: 0.7958 - val_loss: 0.7106 - val_accuracy: 0.8056 Epoch 3/50 45/45 [==============================] - 5s 103ms/step - loss: 0.6860 - accuracy: 0.8319 - val_loss: 0.6585 - val_accuracy: 0.8222 Epoch 4/50 45/45 [==============================] - 5s 122ms/step - loss: 0.6171 - accuracy: 0.8278 - val_loss: 0.6155 - val_accuracy: 0.8111 Epoch 5/50 45/45 [==============================] - 4s 98ms/step - loss: 0.5640 - accuracy: 0.8542 - val_loss: 0.5684 - val_accuracy: 0.8333 Epoch 6/50 45/45 [==============================] - 5s 121ms/step - loss: 0.5093 - accuracy: 0.8597 - val_loss: 0.5072 - val_accuracy: 0.9056 Epoch 7/50 45/45 [==============================] - 5s 99ms/step - loss: 0.5306 - accuracy: 0.8500 - val_loss: 0.5412 - val_accuracy: 0.8833 Epoch 8/50 45/45 [==============================] - 5s 104ms/step - loss: 0.4844 - accuracy: 0.8750 - val_loss: 0.4614 - val_accuracy: 0.8944 Epoch 9/50 45/45 [==============================] - 6s 134ms/step - loss: 0.4515 - accuracy: 0.8931 - val_loss: 0.4365 - val_accuracy: 0.9000 Epoch 10/50 45/45 [==============================] - 4s 99ms/step - loss: 0.4265 - accuracy: 0.9028 - val_loss: 0.4227 - val_accuracy: 0.9111 Epoch 11/50 45/45 [==============================] - 5s 113ms/step - loss: 0.4287 - accuracy: 0.8931 - val_loss: 0.4242 - val_accuracy: 0.9111 Epoch 12/50 45/45 [==============================] - 5s 114ms/step - loss: 0.4125 - accuracy: 0.9042 - val_loss: 0.3974 - val_accuracy: 0.9167 Epoch 13/50 45/45 [==============================] - 5s 103ms/step - loss: 0.3524 - accuracy: 0.9208 - val_loss: 0.3871 - val_accuracy: 0.9167 Epoch 14/50 45/45 [==============================] - 6s 132ms/step - loss: 0.3522 - accuracy: 0.9222 - val_loss: 0.3935 - val_accuracy: 0.9000 Epoch 15/50 45/45 [==============================] - 5s 104ms/step - loss: 0.3698 - accuracy: 0.9125 - val_loss: 0.3873 - val_accuracy: 0.9222 Epoch 16/50 45/45 [==============================] - 5s 117ms/step - loss: 0.3819 - accuracy: 0.9014 - val_loss: 0.3807 - val_accuracy: 0.9222 Epoch 17/50 45/45 [==============================] - 6s 136ms/step - loss: 0.3554 - accuracy: 0.9194 - val_loss: 0.3694 - val_accuracy: 0.9389 Epoch 18/50 45/45 [==============================] - 5s 100ms/step - loss: 0.3552 - accuracy: 0.9069 - val_loss: 0.3669 - val_accuracy: 0.9222 Epoch 19/50 45/45 [==============================] - 5s 116ms/step - loss: 0.3823 - accuracy: 0.8958 - val_loss: 0.3654 - val_accuracy: 0.9222 Epoch 20/50 45/45 [==============================] - 5s 105ms/step - loss: 0.3372 - accuracy: 0.9125 - val_loss: 0.3639 - val_accuracy: 0.9278 Epoch 21/50 45/45 [==============================] - 5s 105ms/step - loss: 0.3191 - accuracy: 0.9417 - val_loss: 0.3645 - val_accuracy: 0.9111 Epoch 22/50 45/45 [==============================] - 6s 128ms/step - loss: 0.3607 - accuracy: 0.9111 - val_loss: 0.3364 - val_accuracy: 0.9222 Epoch 23/50 45/45 [==============================] - 5s 103ms/step - loss: 0.3481 - accuracy: 0.9097 - val_loss: 0.3648 - val_accuracy: 0.9278 Epoch 24/50 45/45 [==============================] - 4s 98ms/step - loss: 0.3420 - accuracy: 0.9139 - val_loss: 0.3475 - val_accuracy: 0.9222 Epoch 25/50 45/45 [==============================] - 5s 120ms/step - loss: 0.3591 - accuracy: 0.9028 - val_loss: 0.3547 - val_accuracy: 0.9222 8/8 [==============================] - 1s 62ms/step Epoch 1/50 23/23 [==============================] - 6s 218ms/step - loss: 1.5406 - accuracy: 0.5153 - val_loss: 1.1184 - val_accuracy: 0.7167 Epoch 2/50 23/23 [==============================] - 4s 188ms/step - loss: 1.0243 - accuracy: 0.7222 - val_loss: 0.8418 - val_accuracy: 0.8000 Epoch 3/50 23/23 [==============================] - 5s 232ms/step - loss: 0.8004 - accuracy: 0.7972 - val_loss: 0.7266 - val_accuracy: 0.8222 Epoch 4/50 23/23 [==============================] - 5s 200ms/step - loss: 0.6975 - accuracy: 0.8347 - val_loss: 0.6376 - val_accuracy: 0.8167 Epoch 5/50 23/23 [==============================] - 4s 183ms/step - loss: 0.6146 - accuracy: 0.8472 - val_loss: 0.5969 - val_accuracy: 0.8722 Epoch 6/50 23/23 [==============================] - 6s 248ms/step - loss: 0.5859 - accuracy: 0.8569 - val_loss: 0.5884 - val_accuracy: 0.8556 Epoch 7/50 23/23 [==============================] - 5s 198ms/step - loss: 0.5495 - accuracy: 0.8681 - val_loss: 0.5793 - val_accuracy: 0.8667 Epoch 8/50 23/23 [==============================] - 5s 203ms/step - loss: 0.5120 - accuracy: 0.8722 - val_loss: 0.5177 - val_accuracy: 0.8833 Epoch 9/50 23/23 [==============================] - 5s 195ms/step - loss: 0.4787 - accuracy: 0.8708 - val_loss: 0.4906 - val_accuracy: 0.8667 Epoch 10/50 23/23 [==============================] - 5s 198ms/step - loss: 0.4738 - accuracy: 0.8833 - val_loss: 0.5042 - val_accuracy: 0.8667 Epoch 11/50 23/23 [==============================] - 5s 228ms/step - loss: 0.4312 - accuracy: 0.9069 - val_loss: 0.4659 - val_accuracy: 0.8944 Epoch 12/50 23/23 [==============================] - 5s 212ms/step - loss: 0.4433 - accuracy: 0.8986 - val_loss: 0.4468 - val_accuracy: 0.9111 Epoch 13/50 23/23 [==============================] - 5s 195ms/step - loss: 0.4236 - accuracy: 0.8903 - val_loss: 0.4812 - val_accuracy: 0.9111 Epoch 14/50 23/23 [==============================] - 4s 181ms/step - loss: 0.4140 - accuracy: 0.9000 - val_loss: 0.4475 - val_accuracy: 0.9056 Epoch 15/50 23/23 [==============================] - 5s 235ms/step - loss: 0.4032 - accuracy: 0.9125 - val_loss: 0.4618 - val_accuracy: 0.9111 8/8 [==============================] - 1s 62ms/step Epoch 1/50 12/12 [==============================] - 6s 389ms/step - loss: 1.7819 - accuracy: 0.4153 - val_loss: 1.3319 - val_accuracy: 0.7222 Epoch 2/50 12/12 [==============================] - 6s 463ms/step - loss: 1.2250 - accuracy: 0.6722 - val_loss: 1.0461 - val_accuracy: 0.7611 Epoch 3/50 12/12 [==============================] - 5s 375ms/step - loss: 0.9918 - accuracy: 0.7736 - val_loss: 0.9367 - val_accuracy: 0.7389 Epoch 4/50 12/12 [==============================] - 5s 399ms/step - loss: 0.8552 - accuracy: 0.7931 - val_loss: 0.7828 - val_accuracy: 0.7833 Epoch 5/50 12/12 [==============================] - 4s 348ms/step - loss: 0.7513 - accuracy: 0.8306 - val_loss: 0.7377 - val_accuracy: 0.7944 Epoch 6/50 12/12 [==============================] - 5s 458ms/step - loss: 0.6824 - accuracy: 0.8292 - val_loss: 0.7020 - val_accuracy: 0.8056 Epoch 7/50 12/12 [==============================] - 5s 370ms/step - loss: 0.6519 - accuracy: 0.8403 - val_loss: 0.6569 - val_accuracy: 0.8000 Epoch 8/50 12/12 [==============================] - 6s 473ms/step - loss: 0.5811 - accuracy: 0.8778 - val_loss: 0.6056 - val_accuracy: 0.8389 Epoch 9/50 12/12 [==============================] - 4s 349ms/step - loss: 0.5695 - accuracy: 0.8569 - val_loss: 0.5780 - val_accuracy: 0.8444 Epoch 10/50 12/12 [==============================] - 5s 442ms/step - loss: 0.5670 - accuracy: 0.8500 - val_loss: 0.5559 - val_accuracy: 0.8444 Epoch 11/50 12/12 [==============================] - 5s 374ms/step - loss: 0.5224 - accuracy: 0.8764 - val_loss: 0.5770 - val_accuracy: 0.8611 Epoch 12/50 12/12 [==============================] - 4s 371ms/step - loss: 0.4829 - accuracy: 0.8972 - val_loss: 0.5147 - val_accuracy: 0.8611 Epoch 13/50 12/12 [==============================] - 5s 459ms/step - loss: 0.4895 - accuracy: 0.8792 - val_loss: 0.4925 - val_accuracy: 0.8778 Epoch 14/50 12/12 [==============================] - 6s 483ms/step - loss: 0.4630 - accuracy: 0.8861 - val_loss: 0.4823 - val_accuracy: 0.8778 Epoch 15/50 12/12 [==============================] - 4s 373ms/step - loss: 0.5011 - accuracy: 0.8764 - val_loss: 0.5022 - val_accuracy: 0.8389 Epoch 16/50 12/12 [==============================] - 4s 348ms/step - loss: 0.4412 - accuracy: 0.9111 - val_loss: 0.5011 - val_accuracy: 0.8833 Epoch 17/50 12/12 [==============================] - 5s 441ms/step - loss: 0.4336 - accuracy: 0.9014 - val_loss: 0.4634 - val_accuracy: 0.9111 Epoch 18/50 12/12 [==============================] - 4s 371ms/step - loss: 0.4262 - accuracy: 0.9000 - val_loss: 0.4674 - val_accuracy: 0.8889 Epoch 19/50 12/12 [==============================] - 5s 371ms/step - loss: 0.4075 - accuracy: 0.9056 - val_loss: 0.4387 - val_accuracy: 0.9000 Epoch 20/50 12/12 [==============================] - 4s 346ms/step - loss: 0.4241 - accuracy: 0.8944 - val_loss: 0.4439 - val_accuracy: 0.9167 Epoch 21/50 12/12 [==============================] - 5s 450ms/step - loss: 0.3900 - accuracy: 0.9111 - val_loss: 0.4221 - val_accuracy: 0.9111 Epoch 22/50 12/12 [==============================] - 4s 346ms/step - loss: 0.3923 - accuracy: 0.9000 - val_loss: 0.4192 - val_accuracy: 0.8944 Epoch 23/50 12/12 [==============================] - 5s 376ms/step - loss: 0.3867 - accuracy: 0.9056 - val_loss: 0.4104 - val_accuracy: 0.9056 Epoch 24/50 12/12 [==============================] - 6s 492ms/step - loss: 0.3811 - accuracy: 0.9028 - val_loss: 0.3976 - val_accuracy: 0.9167 Epoch 25/50 12/12 [==============================] - 4s 342ms/step - loss: 0.3782 - accuracy: 0.9167 - val_loss: 0.4167 - val_accuracy: 0.9222 Epoch 26/50 12/12 [==============================] - 5s 395ms/step - loss: 0.3632 - accuracy: 0.9125 - val_loss: 0.4242 - val_accuracy: 0.9056 Epoch 27/50 12/12 [==============================] - 5s 377ms/step - loss: 0.3910 - accuracy: 0.9139 - val_loss: 0.4108 - val_accuracy: 0.9278 8/8 [==============================] - 1s 62ms/step Epoch 1/50 6/6 [==============================] - 6s 842ms/step - loss: 1.8592 - accuracy: 0.3583 - val_loss: 1.5377 - val_accuracy: 0.7056 Epoch 2/50 6/6 [==============================] - 5s 763ms/step - loss: 1.4889 - accuracy: 0.5375 - val_loss: 1.2519 - val_accuracy: 0.7222 Epoch 3/50 6/6 [==============================] - 4s 730ms/step - loss: 1.2420 - accuracy: 0.6639 - val_loss: 1.0997 - val_accuracy: 0.7333 Epoch 4/50 6/6 [==============================] - 6s 984ms/step - loss: 1.0912 - accuracy: 0.7472 - val_loss: 1.0083 - val_accuracy: 0.7722 Epoch 5/50 6/6 [==============================] - 4s 711ms/step - loss: 0.9697 - accuracy: 0.7625 - val_loss: 0.8893 - val_accuracy: 0.7722 Epoch 6/50 6/6 [==============================] - 4s 719ms/step - loss: 0.8765 - accuracy: 0.7722 - val_loss: 0.8680 - val_accuracy: 0.7889 Epoch 7/50 6/6 [==============================] - 6s 925ms/step - loss: 0.8093 - accuracy: 0.7931 - val_loss: 0.7724 - val_accuracy: 0.8000 Epoch 8/50 6/6 [==============================] - 5s 748ms/step - loss: 0.7355 - accuracy: 0.8375 - val_loss: 0.7415 - val_accuracy: 0.8111 Epoch 9/50 6/6 [==============================] - 5s 904ms/step - loss: 0.7033 - accuracy: 0.8375 - val_loss: 0.6856 - val_accuracy: 0.8389 Epoch 10/50 6/6 [==============================] - 4s 696ms/step - loss: 0.6379 - accuracy: 0.8611 - val_loss: 0.6623 - val_accuracy: 0.8444 Epoch 11/50 6/6 [==============================] - 5s 751ms/step - loss: 0.6299 - accuracy: 0.8597 - val_loss: 0.6300 - val_accuracy: 0.8500 Epoch 12/50 6/6 [==============================] - 6s 1s/step - loss: 0.6033 - accuracy: 0.8514 - val_loss: 0.6079 - val_accuracy: 0.8389 Epoch 13/50 6/6 [==============================] - 5s 774ms/step - loss: 0.5618 - accuracy: 0.8708 - val_loss: 0.5761 - val_accuracy: 0.8556 Epoch 14/50 6/6 [==============================] - 5s 771ms/step - loss: 0.5506 - accuracy: 0.8764 - val_loss: 0.5705 - val_accuracy: 0.8667 Epoch 15/50 6/6 [==============================] - 5s 757ms/step - loss: 0.5362 - accuracy: 0.8792 - val_loss: 0.5402 - val_accuracy: 0.8611 Epoch 16/50 6/6 [==============================] - 5s 780ms/step - loss: 0.5196 - accuracy: 0.8750 - val_loss: 0.5392 - val_accuracy: 0.8778 Epoch 17/50 6/6 [==============================] - 6s 960ms/step - loss: 0.4937 - accuracy: 0.8889 - val_loss: 0.5126 - val_accuracy: 0.8889 Epoch 18/50 6/6 [==============================] - 5s 798ms/step - loss: 0.5048 - accuracy: 0.8764 - val_loss: 0.5101 - val_accuracy: 0.8667 Epoch 19/50 6/6 [==============================] - 4s 777ms/step - loss: 0.4780 - accuracy: 0.8931 - val_loss: 0.5007 - val_accuracy: 0.9000 Epoch 20/50 6/6 [==============================] - 5s 826ms/step - loss: 0.4520 - accuracy: 0.9083 - val_loss: 0.4903 - val_accuracy: 0.8833 Epoch 21/50 6/6 [==============================] - 5s 859ms/step - loss: 0.4267 - accuracy: 0.9125 - val_loss: 0.4757 - val_accuracy: 0.9000 Epoch 22/50 6/6 [==============================] - 5s 775ms/step - loss: 0.4460 - accuracy: 0.8861 - val_loss: 0.4672 - val_accuracy: 0.9000 Epoch 23/50 6/6 [==============================] - 6s 921ms/step - loss: 0.4386 - accuracy: 0.8986 - val_loss: 0.4644 - val_accuracy: 0.8944 Epoch 24/50 6/6 [==============================] - 5s 843ms/step - loss: 0.4411 - accuracy: 0.8958 - val_loss: 0.4516 - val_accuracy: 0.9111 Epoch 25/50 6/6 [==============================] - 6s 992ms/step - loss: 0.4114 - accuracy: 0.9042 - val_loss: 0.4502 - val_accuracy: 0.9111 Epoch 26/50 6/6 [==============================] - 5s 763ms/step - loss: 0.4119 - accuracy: 0.9111 - val_loss: 0.4370 - val_accuracy: 0.9167 Epoch 27/50 6/6 [==============================] - 6s 886ms/step - loss: 0.4021 - accuracy: 0.8986 - val_loss: 0.4407 - val_accuracy: 0.9167 Epoch 28/50 6/6 [==============================] - 5s 784ms/step - loss: 0.3995 - accuracy: 0.9153 - val_loss: 0.4212 - val_accuracy: 0.9167 Epoch 29/50 6/6 [==============================] - 5s 729ms/step - loss: 0.3794 - accuracy: 0.9194 - val_loss: 0.4260 - val_accuracy: 0.9167 Epoch 30/50 6/6 [==============================] - 4s 721ms/step - loss: 0.4019 - accuracy: 0.9000 - val_loss: 0.4117 - val_accuracy: 0.9111 Epoch 31/50 6/6 [==============================] - 6s 938ms/step - loss: 0.3684 - accuracy: 0.9236 - val_loss: 0.4098 - val_accuracy: 0.9222 Epoch 32/50 6/6 [==============================] - 5s 762ms/step - loss: 0.3605 - accuracy: 0.9250 - val_loss: 0.4041 - val_accuracy: 0.9167 Epoch 33/50 6/6 [==============================] - 5s 816ms/step - loss: 0.3578 - accuracy: 0.9278 - val_loss: 0.3936 - val_accuracy: 0.9167 Epoch 34/50 6/6 [==============================] - 5s 903ms/step - loss: 0.3696 - accuracy: 0.9125 - val_loss: 0.3940 - val_accuracy: 0.9222 Epoch 35/50 6/6 [==============================] - 4s 711ms/step - loss: 0.3441 - accuracy: 0.9389 - val_loss: 0.3900 - val_accuracy: 0.9278 Epoch 36/50 6/6 [==============================] - 6s 1s/step - loss: 0.3838 - accuracy: 0.9042 - val_loss: 0.3792 - val_accuracy: 0.9278 Epoch 37/50 6/6 [==============================] - 4s 708ms/step - loss: 0.3477 - accuracy: 0.9208 - val_loss: 0.4082 - val_accuracy: 0.9222 Epoch 38/50 6/6 [==============================] - 4s 703ms/step - loss: 0.3408 - accuracy: 0.9319 - val_loss: 0.3745 - val_accuracy: 0.9278 Epoch 39/50 6/6 [==============================] - 5s 820ms/step - loss: 0.3237 - accuracy: 0.9361 - val_loss: 0.3914 - val_accuracy: 0.9333 Epoch 40/50 6/6 [==============================] - 5s 746ms/step - loss: 0.3470 - accuracy: 0.9278 - val_loss: 0.3699 - val_accuracy: 0.9333 Epoch 41/50 6/6 [==============================] - 5s 883ms/step - loss: 0.3392 - accuracy: 0.9250 - val_loss: 0.3782 - val_accuracy: 0.9333 Epoch 42/50 6/6 [==============================] - 4s 705ms/step - loss: 0.3214 - accuracy: 0.9347 - val_loss: 0.3610 - val_accuracy: 0.9389 Epoch 43/50 6/6 [==============================] - 5s 735ms/step - loss: 0.3232 - accuracy: 0.9347 - val_loss: 0.3643 - val_accuracy: 0.9333 Epoch 44/50 6/6 [==============================] - 6s 999ms/step - loss: 0.3188 - accuracy: 0.9375 - val_loss: 0.3640 - val_accuracy: 0.9278 Epoch 45/50 6/6 [==============================] - 4s 718ms/step - loss: 0.3400 - accuracy: 0.9194 - val_loss: 0.3537 - val_accuracy: 0.9444 Epoch 46/50 6/6 [==============================] - 5s 825ms/step - loss: 0.3202 - accuracy: 0.9333 - val_loss: 0.3696 - val_accuracy: 0.9278 Epoch 47/50 6/6 [==============================] - 5s 763ms/step - loss: 0.3211 - accuracy: 0.9375 - val_loss: 0.3513 - val_accuracy: 0.9389 Epoch 48/50 6/6 [==============================] - 5s 781ms/step - loss: 0.2995 - accuracy: 0.9333 - val_loss: 0.3632 - val_accuracy: 0.9333 Epoch 49/50 6/6 [==============================] - 5s 967ms/step - loss: 0.3105 - accuracy: 0.9292 - val_loss: 0.3513 - val_accuracy: 0.9333 Epoch 50/50 6/6 [==============================] - 4s 705ms/step - loss: 0.2845 - accuracy: 0.9458 - val_loss: 0.3518 - val_accuracy: 0.9333 8/8 [==============================] - 1s 62ms/step
enhanced_model_output
| Epochs | Batch Size | Training_accuracy | Training_loss | Validation_accuracy | Validation_loss | Accuracy | |
|---|---|---|---|---|---|---|---|
| 0 | 5.0 | 16.0 | 0.763611 | 0.834489 | 0.810000 | 0.716021 | 0.871111 |
| 1 | 5.0 | 32.0 | 0.739722 | 0.948827 | 0.796667 | 0.811043 | 0.862222 |
| 2 | 5.0 | 64.0 | 0.680556 | 1.127381 | 0.752222 | 0.973996 | 0.831111 |
| 3 | 5.0 | 128.0 | 0.638333 | 1.284378 | 0.751111 | 1.120132 | 0.831111 |
| 4 | 10.0 | 16.0 | 0.824583 | 0.652155 | 0.836667 | 0.601817 | 0.911111 |
| 5 | 10.0 | 32.0 | 0.805278 | 0.722179 | 0.830000 | 0.654685 | 0.911111 |
| 6 | 10.0 | 64.0 | 0.772500 | 0.853420 | 0.802778 | 0.776609 | 0.888889 |
| 7 | 10.0 | 128.0 | 0.734583 | 1.005421 | 0.778889 | 0.939212 | 0.862222 |
| 8 | 20.0 | 16.0 | 0.864043 | 0.529002 | 0.879938 | 0.508344 | 0.915556 |
| 9 | 20.0 | 32.0 | 0.851736 | 0.565784 | 0.859722 | 0.551068 | 0.911111 |
| 10 | 20.0 | 64.0 | 0.838889 | 0.644760 | 0.847778 | 0.624524 | 0.920000 |
| 11 | 20.0 | 128.0 | 0.817917 | 0.741925 | 0.833889 | 0.713309 | 0.906667 |
| 12 | 50.0 | 16.0 | 0.877556 | 0.478096 | 0.892444 | 0.459732 | 0.928889 |
| 13 | 50.0 | 32.0 | 0.838426 | 0.626169 | 0.860000 | 0.593647 | 0.911111 |
| 14 | 50.0 | 64.0 | 0.852932 | 0.590036 | 0.856790 | 0.582132 | 0.902222 |
| 15 | 50.0 | 128.0 | 0.871417 | 0.532475 | 0.883333 | 0.539265 | 0.937778 |
plot_loss(enhanced_model_output)
plot_accuracy(enhanced_model_output)
plot_test_accuracy(enhanced_model_output)
From the above, it is worthy to note that across all different combinations of Batch Size and Epoch, the test accuracy shows a steady increase along with training, and validation accuracy as epoch increases. The test accuracy in general is around 90% and the training and validation accuracy can in general reach around 85%, showing the model can continute learning in the training and validation set. This is a good sign that the model is performing well and the model is able to capture relationship that's complex enough to yield increasingly accurate predictions.
It is worthy to note that early stopping does play a role while formulating a proper model. From the log of training, it appears that early stopping intervenes at the combination of
batch=16, epoch=20
batch=16, epoch=50
batch=32, epoch=50
batch=64, epoch=50
batch=128, epoch=50
This has indicated several interesting findings:
With the boost of early stopping, the model is capable of running under different combinations of batch size and epoch, which is a really power technique to make the model to be generalizable enough in terms of different combinations of batch size and epoch.
It appears that epoch=50 is too many iterations for this particular model to achieve the optimal outcomes, and from a detailed record of the training log, the optimal training epoch, in general, would be around 30 epochs for this particular model.
This model is performing well to cature suffciently complex relationship while do not possess overfitting or underfitting problems. The next step would be to hyperparameter tuning for this given model structure in order to obtain an optimal model.
From the training log of the above modellings, which all outputs decent model prediction capabilities, we can fairly conclude that epochs of 30 is capable of producing sufficiently great prediction performance. It is very important to combine the results and insights obatined above while exploring for additional hyperparameters. Therefore, for the rest of the hyperparameter tuning, we can set epoch=30 directly.
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Dense, Dropout, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.model_selection import train_test_split
import numpy as np
def enhanced_vgg_16_hyperparameter_tuning(X, y, df, epochs, batch_sizes):
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
num_labels = len(np.unique(df['label']))
y_train = np.eye(num_labels)[Y_train]
y_test = np.eye(num_labels)[Y_test]
y_val = np.eye(num_labels)[Y_val]
# Data augmentation
train_datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest'
)
train_datagen.fit(X_train)
# Hyperparameters to explore
dropout_rates = [0.3, 0.5, 0.7]
l2_regularizations = [0.001, 0.01, 0.1]
best_accuracy = 0.0
best_params = {}
best_batch_size = None
results = {} # Store results for each batch size
for batch_size in batch_sizes:
batch_size_results = [] # Store results for current batch size
for dropout_rate in dropout_rates:
for l2_regularization in l2_regularizations:
# Initialize the base model
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
for layer in base_model.layers:
layer.trainable = False
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu', kernel_regularizer=l2(l2_regularization))(x)
x = Dropout(dropout_rate)(x)
predictions = Dense(num_labels, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
# Compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Early stopping
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)
# Fit the model with augmented data
history = model.fit(
train_datagen.flow(X_train, y_train, batch_size=batch_size),
epochs=epochs,
validation_data=(X_val, y_val),
callbacks=[early_stop]
)
test_predictions = model.predict(X_test)
predicted_labels = np.argmax(test_predictions, axis=1)
accuracy = np.mean(predicted_labels == Y_test)
# Store the accuracy for current hyperparameters
batch_size_results.append({'dropout_rate': dropout_rate,
'l2_regularization': l2_regularization,
'accuracy': accuracy})
if accuracy > best_accuracy:
best_accuracy = accuracy
best_params = {'dropout_rate': dropout_rate, 'l2_regularization': l2_regularization}
best_batch_size = batch_size
# Store the results for current batch size
results[batch_size] = batch_size_results
return best_params, best_accuracy, best_batch_size, results
batch_sizes_list=[16,32,64,128]
enhanced_vgg_16_hyperparameter_tuning(X, y, df, 30, batch_sizes=batch_sizes_list)
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5 58889256/58889256 [==============================] - 3s 0us/step Epoch 1/30 45/45 [==============================] - 7s 129ms/step - loss: 1.2632 - accuracy: 0.6597 - val_loss: 0.9088 - val_accuracy: 0.7611 Epoch 2/30 45/45 [==============================] - 4s 96ms/step - loss: 0.7805 - accuracy: 0.7972 - val_loss: 0.7288 - val_accuracy: 0.8056 Epoch 3/30 45/45 [==============================] - 4s 99ms/step - loss: 0.6329 - accuracy: 0.8361 - val_loss: 0.6432 - val_accuracy: 0.8222 Epoch 4/30 45/45 [==============================] - 5s 112ms/step - loss: 0.5314 - accuracy: 0.8750 - val_loss: 0.6406 - val_accuracy: 0.8000 Epoch 5/30 45/45 [==============================] - 5s 102ms/step - loss: 0.5105 - accuracy: 0.8861 - val_loss: 0.5422 - val_accuracy: 0.8556 Epoch 6/30 45/45 [==============================] - 5s 121ms/step - loss: 0.4451 - accuracy: 0.8917 - val_loss: 0.5240 - val_accuracy: 0.8556 Epoch 7/30 45/45 [==============================] - 5s 103ms/step - loss: 0.4397 - accuracy: 0.8958 - val_loss: 0.4966 - val_accuracy: 0.8556 Epoch 8/30 45/45 [==============================] - 6s 126ms/step - loss: 0.4424 - accuracy: 0.8917 - val_loss: 0.5005 - val_accuracy: 0.8778 Epoch 9/30 45/45 [==============================] - 5s 100ms/step - loss: 0.3993 - accuracy: 0.9181 - val_loss: 0.5113 - val_accuracy: 0.8722 Epoch 10/30 45/45 [==============================] - 5s 119ms/step - loss: 0.3665 - accuracy: 0.9097 - val_loss: 0.4747 - val_accuracy: 0.8611 Epoch 11/30 45/45 [==============================] - 5s 100ms/step - loss: 0.3740 - accuracy: 0.9236 - val_loss: 0.4858 - val_accuracy: 0.8944 Epoch 12/30 45/45 [==============================] - 5s 101ms/step - loss: 0.3663 - accuracy: 0.9153 - val_loss: 0.4532 - val_accuracy: 0.8722 Epoch 13/30 45/45 [==============================] - 6s 127ms/step - loss: 0.3741 - accuracy: 0.9056 - val_loss: 0.4670 - val_accuracy: 0.8833 Epoch 14/30 45/45 [==============================] - 4s 94ms/step - loss: 0.3217 - accuracy: 0.9375 - val_loss: 0.4551 - val_accuracy: 0.9000 Epoch 15/30 45/45 [==============================] - 5s 116ms/step - loss: 0.3284 - accuracy: 0.9306 - val_loss: 0.4891 - val_accuracy: 0.8667 8/8 [==============================] - 1s 63ms/step Epoch 1/30 45/45 [==============================] - 6s 108ms/step - loss: 3.7257 - accuracy: 0.6347 - val_loss: 1.9653 - val_accuracy: 0.7556 Epoch 2/30 45/45 [==============================] - 5s 112ms/step - loss: 1.4389 - accuracy: 0.7639 - val_loss: 1.1069 - val_accuracy: 0.8056 Epoch 3/30 45/45 [==============================] - 5s 104ms/step - loss: 0.9370 - accuracy: 0.8278 - val_loss: 0.8935 - val_accuracy: 0.8278 Epoch 4/30 45/45 [==============================] - 4s 95ms/step - loss: 0.7976 - accuracy: 0.8375 - val_loss: 0.8451 - val_accuracy: 0.8167 Epoch 5/30 45/45 [==============================] - 6s 126ms/step - loss: 0.7174 - accuracy: 0.8417 - val_loss: 0.7734 - val_accuracy: 0.8278 Epoch 6/30 45/45 [==============================] - 5s 100ms/step - loss: 0.6393 - accuracy: 0.8833 - val_loss: 0.7478 - val_accuracy: 0.8056 Epoch 7/30 45/45 [==============================] - 5s 118ms/step - loss: 0.6338 - accuracy: 0.8611 - val_loss: 0.6467 - val_accuracy: 0.8444 Epoch 8/30 45/45 [==============================] - 5s 121ms/step - loss: 0.6001 - accuracy: 0.8833 - val_loss: 0.6368 - val_accuracy: 0.8556 Epoch 9/30 45/45 [==============================] - 4s 98ms/step - loss: 0.5635 - accuracy: 0.8722 - val_loss: 0.6457 - val_accuracy: 0.8444 Epoch 10/30 45/45 [==============================] - 4s 93ms/step - loss: 0.5631 - accuracy: 0.8667 - val_loss: 0.6530 - val_accuracy: 0.8167 Epoch 11/30 45/45 [==============================] - 7s 147ms/step - loss: 0.5442 - accuracy: 0.8736 - val_loss: 0.6342 - val_accuracy: 0.8444 Epoch 12/30 45/45 [==============================] - 5s 101ms/step - loss: 0.5647 - accuracy: 0.8556 - val_loss: 0.6016 - val_accuracy: 0.8167 Epoch 13/30 45/45 [==============================] - 5s 101ms/step - loss: 0.5517 - accuracy: 0.8694 - val_loss: 0.6555 - val_accuracy: 0.8222 Epoch 14/30 45/45 [==============================] - 5s 112ms/step - loss: 0.5425 - accuracy: 0.8667 - val_loss: 0.6319 - val_accuracy: 0.8500 Epoch 15/30 45/45 [==============================] - 4s 96ms/step - loss: 0.5086 - accuracy: 0.8819 - val_loss: 0.5894 - val_accuracy: 0.8444 Epoch 16/30 45/45 [==============================] - 5s 120ms/step - loss: 0.5005 - accuracy: 0.8861 - val_loss: 0.5648 - val_accuracy: 0.8667 Epoch 17/30 45/45 [==============================] - 5s 101ms/step - loss: 0.5113 - accuracy: 0.8986 - val_loss: 0.6075 - val_accuracy: 0.8556 Epoch 18/30 45/45 [==============================] - 4s 95ms/step - loss: 0.5089 - accuracy: 0.8708 - val_loss: 0.5481 - val_accuracy: 0.8500 Epoch 19/30 45/45 [==============================] - 5s 110ms/step - loss: 0.5327 - accuracy: 0.8681 - val_loss: 0.5409 - val_accuracy: 0.8778 Epoch 20/30 45/45 [==============================] - 4s 94ms/step - loss: 0.4835 - accuracy: 0.8917 - val_loss: 0.5257 - val_accuracy: 0.8722 Epoch 21/30 45/45 [==============================] - 5s 112ms/step - loss: 0.4702 - accuracy: 0.8861 - val_loss: 0.7074 - val_accuracy: 0.7889 Epoch 22/30 45/45 [==============================] - 5s 100ms/step - loss: 0.5720 - accuracy: 0.8458 - val_loss: 0.7161 - val_accuracy: 0.7889 Epoch 23/30 45/45 [==============================] - 5s 101ms/step - loss: 0.5074 - accuracy: 0.8681 - val_loss: 0.5319 - val_accuracy: 0.8778 8/8 [==============================] - 1s 63ms/step Epoch 1/30 45/45 [==============================] - 7s 108ms/step - loss: 24.3543 - accuracy: 0.4931 - val_loss: 7.3770 - val_accuracy: 0.5278 Epoch 2/30 45/45 [==============================] - 5s 100ms/step - loss: 3.4041 - accuracy: 0.6958 - val_loss: 1.5448 - val_accuracy: 0.7111 Epoch 3/30 45/45 [==============================] - 5s 118ms/step - loss: 1.2512 - accuracy: 0.7139 - val_loss: 1.1040 - val_accuracy: 0.7222 Epoch 4/30 45/45 [==============================] - 5s 107ms/step - loss: 1.0329 - accuracy: 0.7542 - val_loss: 1.0660 - val_accuracy: 0.7500 Epoch 5/30 45/45 [==============================] - 5s 101ms/step - loss: 0.9786 - accuracy: 0.7722 - val_loss: 0.9828 - val_accuracy: 0.7722 Epoch 6/30 45/45 [==============================] - 4s 100ms/step - loss: 0.9433 - accuracy: 0.7694 - val_loss: 1.0103 - val_accuracy: 0.7278 Epoch 7/30 45/45 [==============================] - 5s 118ms/step - loss: 0.9305 - accuracy: 0.7667 - val_loss: 0.9103 - val_accuracy: 0.7611 Epoch 8/30 45/45 [==============================] - 4s 95ms/step - loss: 0.8865 - accuracy: 0.7958 - val_loss: 0.9438 - val_accuracy: 0.7444 Epoch 9/30 45/45 [==============================] - 5s 111ms/step - loss: 0.8525 - accuracy: 0.8014 - val_loss: 0.8798 - val_accuracy: 0.7722 Epoch 10/30 45/45 [==============================] - 4s 95ms/step - loss: 0.8430 - accuracy: 0.8056 - val_loss: 0.8635 - val_accuracy: 0.7778 Epoch 11/30 45/45 [==============================] - 6s 124ms/step - loss: 0.8886 - accuracy: 0.7653 - val_loss: 0.8746 - val_accuracy: 0.8111 Epoch 12/30 45/45 [==============================] - 4s 95ms/step - loss: 0.8784 - accuracy: 0.7625 - val_loss: 0.8522 - val_accuracy: 0.7500 Epoch 13/30 45/45 [==============================] - 5s 111ms/step - loss: 0.8517 - accuracy: 0.7903 - val_loss: 0.8141 - val_accuracy: 0.8111 Epoch 14/30 45/45 [==============================] - 4s 94ms/step - loss: 0.8023 - accuracy: 0.8125 - val_loss: 0.8763 - val_accuracy: 0.7611 Epoch 15/30 45/45 [==============================] - 5s 118ms/step - loss: 0.8270 - accuracy: 0.8042 - val_loss: 0.8239 - val_accuracy: 0.7611 Epoch 16/30 45/45 [==============================] - 4s 94ms/step - loss: 0.8179 - accuracy: 0.8083 - val_loss: 0.8232 - val_accuracy: 0.8056 8/8 [==============================] - 1s 62ms/step Epoch 1/30 45/45 [==============================] - 7s 122ms/step - loss: 1.3970 - accuracy: 0.5472 - val_loss: 0.9825 - val_accuracy: 0.7778 Epoch 2/30 45/45 [==============================] - 5s 104ms/step - loss: 0.8387 - accuracy: 0.7875 - val_loss: 0.7864 - val_accuracy: 0.7944 Epoch 3/30 45/45 [==============================] - 6s 123ms/step - loss: 0.7057 - accuracy: 0.8153 - val_loss: 0.7014 - val_accuracy: 0.8000 Epoch 4/30 45/45 [==============================] - 5s 105ms/step - loss: 0.6162 - accuracy: 0.8472 - val_loss: 0.6582 - val_accuracy: 0.8111 Epoch 5/30 45/45 [==============================] - 5s 107ms/step - loss: 0.5665 - accuracy: 0.8625 - val_loss: 0.6183 - val_accuracy: 0.8389 Epoch 6/30 45/45 [==============================] - 5s 100ms/step - loss: 0.4857 - accuracy: 0.8903 - val_loss: 0.5706 - val_accuracy: 0.8389 Epoch 7/30 45/45 [==============================] - 5s 119ms/step - loss: 0.5007 - accuracy: 0.8597 - val_loss: 0.5316 - val_accuracy: 0.8611 Epoch 8/30 45/45 [==============================] - 5s 99ms/step - loss: 0.4478 - accuracy: 0.8903 - val_loss: 0.5412 - val_accuracy: 0.8556 Epoch 9/30 45/45 [==============================] - 5s 117ms/step - loss: 0.4403 - accuracy: 0.8847 - val_loss: 0.5027 - val_accuracy: 0.8611 Epoch 10/30 45/45 [==============================] - 6s 123ms/step - loss: 0.4196 - accuracy: 0.8931 - val_loss: 0.5199 - val_accuracy: 0.8722 Epoch 11/30 45/45 [==============================] - 5s 117ms/step - loss: 0.4187 - accuracy: 0.9000 - val_loss: 0.5002 - val_accuracy: 0.8556 Epoch 12/30 45/45 [==============================] - 5s 111ms/step - loss: 0.4046 - accuracy: 0.9000 - val_loss: 0.5023 - val_accuracy: 0.8667 Epoch 13/30 45/45 [==============================] - 5s 100ms/step - loss: 0.3805 - accuracy: 0.9153 - val_loss: 0.4579 - val_accuracy: 0.8889 Epoch 14/30 45/45 [==============================] - 5s 113ms/step - loss: 0.3704 - accuracy: 0.9167 - val_loss: 0.4509 - val_accuracy: 0.8889 Epoch 15/30 45/45 [==============================] - 5s 103ms/step - loss: 0.3643 - accuracy: 0.9181 - val_loss: 0.4482 - val_accuracy: 0.9000 Epoch 16/30 45/45 [==============================] - 5s 101ms/step - loss: 0.3548 - accuracy: 0.9306 - val_loss: 0.4544 - val_accuracy: 0.8833 Epoch 17/30 45/45 [==============================] - 6s 125ms/step - loss: 0.3846 - accuracy: 0.9042 - val_loss: 0.4675 - val_accuracy: 0.8833 Epoch 18/30 45/45 [==============================] - 5s 107ms/step - loss: 0.3603 - accuracy: 0.9167 - val_loss: 0.5113 - val_accuracy: 0.8333 8/8 [==============================] - 1s 63ms/step Epoch 1/30 45/45 [==============================] - 6s 102ms/step - loss: 3.8556 - accuracy: 0.5806 - val_loss: 2.0943 - val_accuracy: 0.7500 Epoch 2/30 45/45 [==============================] - 4s 98ms/step - loss: 1.5508 - accuracy: 0.7569 - val_loss: 1.2496 - val_accuracy: 0.7444 Epoch 3/30 45/45 [==============================] - 5s 111ms/step - loss: 1.0574 - accuracy: 0.8069 - val_loss: 1.0478 - val_accuracy: 0.7667 Epoch 4/30 45/45 [==============================] - 4s 94ms/step - loss: 0.9208 - accuracy: 0.8014 - val_loss: 0.8562 - val_accuracy: 0.8111 Epoch 5/30 45/45 [==============================] - 5s 118ms/step - loss: 0.7858 - accuracy: 0.8333 - val_loss: 0.8379 - val_accuracy: 0.7944 Epoch 6/30 45/45 [==============================] - 4s 99ms/step - loss: 0.7361 - accuracy: 0.8389 - val_loss: 0.7614 - val_accuracy: 0.7944 Epoch 7/30 45/45 [==============================] - 5s 118ms/step - loss: 0.7561 - accuracy: 0.8250 - val_loss: 0.7546 - val_accuracy: 0.8278 Epoch 8/30 45/45 [==============================] - 5s 118ms/step - loss: 0.6711 - accuracy: 0.8514 - val_loss: 0.7063 - val_accuracy: 0.8167 Epoch 9/30 45/45 [==============================] - 5s 100ms/step - loss: 0.6489 - accuracy: 0.8514 - val_loss: 0.6987 - val_accuracy: 0.8111 Epoch 10/30 45/45 [==============================] - 6s 126ms/step - loss: 0.6407 - accuracy: 0.8444 - val_loss: 0.6317 - val_accuracy: 0.8556 Epoch 11/30 45/45 [==============================] - 4s 94ms/step - loss: 0.5966 - accuracy: 0.8792 - val_loss: 0.6223 - val_accuracy: 0.8722 Epoch 12/30 45/45 [==============================] - 5s 104ms/step - loss: 0.5812 - accuracy: 0.8681 - val_loss: 0.6431 - val_accuracy: 0.8500 Epoch 13/30 45/45 [==============================] - 5s 104ms/step - loss: 0.5934 - accuracy: 0.8694 - val_loss: 0.6258 - val_accuracy: 0.8611 Epoch 14/30 45/45 [==============================] - 4s 94ms/step - loss: 0.5574 - accuracy: 0.8819 - val_loss: 0.5902 - val_accuracy: 0.8722 Epoch 15/30 45/45 [==============================] - 6s 128ms/step - loss: 0.5777 - accuracy: 0.8597 - val_loss: 0.5790 - val_accuracy: 0.8722 Epoch 16/30 45/45 [==============================] - 4s 99ms/step - loss: 0.5890 - accuracy: 0.8694 - val_loss: 0.6188 - val_accuracy: 0.8222 Epoch 17/30 45/45 [==============================] - 5s 102ms/step - loss: 0.5814 - accuracy: 0.8653 - val_loss: 0.6241 - val_accuracy: 0.8556 Epoch 18/30 45/45 [==============================] - 5s 103ms/step - loss: 0.5594 - accuracy: 0.8653 - val_loss: 0.5847 - val_accuracy: 0.8667 8/8 [==============================] - 1s 62ms/step Epoch 1/30 45/45 [==============================] - 21s 443ms/step - loss: 24.4867 - accuracy: 0.4472 - val_loss: 7.4807 - val_accuracy: 0.6333 Epoch 2/30 45/45 [==============================] - 5s 103ms/step - loss: 3.5534 - accuracy: 0.6472 - val_loss: 1.7081 - val_accuracy: 0.6389 Epoch 3/30 45/45 [==============================] - 5s 118ms/step - loss: 1.3350 - accuracy: 0.7111 - val_loss: 1.1494 - val_accuracy: 0.7778 Epoch 4/30 45/45 [==============================] - 5s 102ms/step - loss: 1.0883 - accuracy: 0.7458 - val_loss: 1.1125 - val_accuracy: 0.7111 Epoch 5/30 45/45 [==============================] - 6s 126ms/step - loss: 1.0251 - accuracy: 0.7375 - val_loss: 1.0341 - val_accuracy: 0.7222 Epoch 6/30 45/45 [==============================] - 5s 103ms/step - loss: 0.9887 - accuracy: 0.7597 - val_loss: 1.0283 - val_accuracy: 0.6722 Epoch 7/30 45/45 [==============================] - 5s 107ms/step - loss: 0.9709 - accuracy: 0.7431 - val_loss: 1.0507 - val_accuracy: 0.6778 Epoch 8/30 45/45 [==============================] - 5s 100ms/step - loss: 1.0120 - accuracy: 0.7194 - val_loss: 0.9595 - val_accuracy: 0.7667 Epoch 9/30 45/45 [==============================] - 6s 126ms/step - loss: 0.9485 - accuracy: 0.7597 - val_loss: 0.9542 - val_accuracy: 0.7444 Epoch 10/30 45/45 [==============================] - 4s 95ms/step - loss: 0.9250 - accuracy: 0.7778 - val_loss: 0.9253 - val_accuracy: 0.7333 Epoch 11/30 45/45 [==============================] - 5s 102ms/step - loss: 0.9242 - accuracy: 0.7625 - val_loss: 0.9238 - val_accuracy: 0.7389 Epoch 12/30 45/45 [==============================] - 5s 108ms/step - loss: 0.9251 - accuracy: 0.7778 - val_loss: 0.8929 - val_accuracy: 0.7611 Epoch 13/30 45/45 [==============================] - 5s 101ms/step - loss: 0.9567 - accuracy: 0.7389 - val_loss: 0.9549 - val_accuracy: 0.7944 Epoch 14/30 45/45 [==============================] - 6s 143ms/step - loss: 0.9028 - accuracy: 0.7597 - val_loss: 0.9432 - val_accuracy: 0.7111 Epoch 15/30 45/45 [==============================] - 4s 96ms/step - loss: 0.8658 - accuracy: 0.7819 - val_loss: 0.9525 - val_accuracy: 0.7444 8/8 [==============================] - 1s 63ms/step Epoch 1/30 45/45 [==============================] - 7s 135ms/step - loss: 1.6270 - accuracy: 0.4722 - val_loss: 1.0983 - val_accuracy: 0.7167 Epoch 2/30 45/45 [==============================] - 5s 105ms/step - loss: 0.9879 - accuracy: 0.7042 - val_loss: 0.8803 - val_accuracy: 0.7389 Epoch 3/30 45/45 [==============================] - 5s 115ms/step - loss: 0.8344 - accuracy: 0.7833 - val_loss: 0.7748 - val_accuracy: 0.7833 Epoch 4/30 45/45 [==============================] - 5s 102ms/step - loss: 0.7293 - accuracy: 0.7917 - val_loss: 0.6963 - val_accuracy: 0.8111 Epoch 5/30 45/45 [==============================] - 5s 111ms/step - loss: 0.6660 - accuracy: 0.8333 - val_loss: 0.6337 - val_accuracy: 0.8333 Epoch 6/30 45/45 [==============================] - 5s 100ms/step - loss: 0.6100 - accuracy: 0.8278 - val_loss: 0.6298 - val_accuracy: 0.8278 Epoch 7/30 45/45 [==============================] - 4s 94ms/step - loss: 0.5790 - accuracy: 0.8431 - val_loss: 0.5844 - val_accuracy: 0.8444 Epoch 8/30 45/45 [==============================] - 5s 119ms/step - loss: 0.5263 - accuracy: 0.8597 - val_loss: 0.5835 - val_accuracy: 0.8333 Epoch 9/30 45/45 [==============================] - 5s 102ms/step - loss: 0.5228 - accuracy: 0.8639 - val_loss: 0.5523 - val_accuracy: 0.8389 Epoch 10/30 45/45 [==============================] - 4s 95ms/step - loss: 0.5191 - accuracy: 0.8569 - val_loss: 0.5774 - val_accuracy: 0.8389 Epoch 11/30 45/45 [==============================] - 5s 111ms/step - loss: 0.5060 - accuracy: 0.8611 - val_loss: 0.5721 - val_accuracy: 0.8556 Epoch 12/30 45/45 [==============================] - 4s 96ms/step - loss: 0.4740 - accuracy: 0.8778 - val_loss: 0.5216 - val_accuracy: 0.8611 Epoch 13/30 45/45 [==============================] - 6s 123ms/step - loss: 0.4527 - accuracy: 0.8833 - val_loss: 0.5170 - val_accuracy: 0.8667 Epoch 14/30 45/45 [==============================] - 4s 96ms/step - loss: 0.4426 - accuracy: 0.8903 - val_loss: 0.4971 - val_accuracy: 0.8833 Epoch 15/30 45/45 [==============================] - 5s 102ms/step - loss: 0.4286 - accuracy: 0.8847 - val_loss: 0.5016 - val_accuracy: 0.8667 Epoch 16/30 45/45 [==============================] - 6s 127ms/step - loss: 0.4709 - accuracy: 0.8792 - val_loss: 0.5297 - val_accuracy: 0.8278 Epoch 17/30 45/45 [==============================] - 5s 103ms/step - loss: 0.4726 - accuracy: 0.8750 - val_loss: 0.5372 - val_accuracy: 0.8556 8/8 [==============================] - 1s 62ms/step Epoch 1/30 45/45 [==============================] - 7s 128ms/step - loss: 4.0462 - accuracy: 0.4681 - val_loss: 2.2382 - val_accuracy: 0.7333 Epoch 2/30 45/45 [==============================] - 4s 98ms/step - loss: 1.7277 - accuracy: 0.7139 - val_loss: 1.3681 - val_accuracy: 0.7667 Epoch 3/30 45/45 [==============================] - 5s 108ms/step - loss: 1.2290 - accuracy: 0.7528 - val_loss: 1.0856 - val_accuracy: 0.7889 Epoch 4/30 45/45 [==============================] - 5s 107ms/step - loss: 1.0098 - accuracy: 0.8014 - val_loss: 0.9981 - val_accuracy: 0.7444 Epoch 5/30 45/45 [==============================] - 5s 100ms/step - loss: 0.9548 - accuracy: 0.7861 - val_loss: 0.9155 - val_accuracy: 0.7778 Epoch 6/30 45/45 [==============================] - 5s 121ms/step - loss: 0.8491 - accuracy: 0.8153 - val_loss: 0.8083 - val_accuracy: 0.8278 Epoch 7/30 45/45 [==============================] - 5s 103ms/step - loss: 0.7952 - accuracy: 0.8278 - val_loss: 0.7837 - val_accuracy: 0.8167 Epoch 8/30 45/45 [==============================] - 5s 109ms/step - loss: 0.7456 - accuracy: 0.8306 - val_loss: 0.7930 - val_accuracy: 0.7833 Epoch 9/30 45/45 [==============================] - 5s 99ms/step - loss: 0.7659 - accuracy: 0.8139 - val_loss: 0.7198 - val_accuracy: 0.8278 Epoch 10/30 45/45 [==============================] - 5s 100ms/step - loss: 0.7099 - accuracy: 0.8472 - val_loss: 0.7234 - val_accuracy: 0.8278 Epoch 11/30 45/45 [==============================] - 5s 119ms/step - loss: 0.7086 - accuracy: 0.8292 - val_loss: 0.7448 - val_accuracy: 0.8056 Epoch 12/30 45/45 [==============================] - 4s 96ms/step - loss: 0.7009 - accuracy: 0.8347 - val_loss: 0.6964 - val_accuracy: 0.8333 Epoch 13/30 45/45 [==============================] - 5s 108ms/step - loss: 0.6782 - accuracy: 0.8403 - val_loss: 0.6583 - val_accuracy: 0.8389 Epoch 14/30 45/45 [==============================] - 4s 95ms/step - loss: 0.6587 - accuracy: 0.8528 - val_loss: 0.6719 - val_accuracy: 0.8333 Epoch 15/30 45/45 [==============================] - 6s 124ms/step - loss: 0.6851 - accuracy: 0.8264 - val_loss: 0.6799 - val_accuracy: 0.8278 Epoch 16/30 45/45 [==============================] - 5s 101ms/step - loss: 0.6406 - accuracy: 0.8528 - val_loss: 0.6261 - val_accuracy: 0.8444 Epoch 17/30 45/45 [==============================] - 5s 114ms/step - loss: 0.6098 - accuracy: 0.8556 - val_loss: 0.6292 - val_accuracy: 0.8556 Epoch 18/30 45/45 [==============================] - 5s 121ms/step - loss: 0.6412 - accuracy: 0.8333 - val_loss: 0.6479 - val_accuracy: 0.8556 Epoch 19/30 45/45 [==============================] - 4s 97ms/step - loss: 0.6746 - accuracy: 0.8292 - val_loss: 0.6517 - val_accuracy: 0.8444 8/8 [==============================] - 1s 64ms/step Epoch 1/30 45/45 [==============================] - 6s 103ms/step - loss: 24.8476 - accuracy: 0.4056 - val_loss: 7.8972 - val_accuracy: 0.4722 Epoch 2/30 45/45 [==============================] - 5s 120ms/step - loss: 3.8648 - accuracy: 0.5917 - val_loss: 1.8139 - val_accuracy: 0.6944 Epoch 3/30 45/45 [==============================] - 6s 125ms/step - loss: 1.5127 - accuracy: 0.6625 - val_loss: 1.2581 - val_accuracy: 0.7556 Epoch 4/30 45/45 [==============================] - 5s 104ms/step - loss: 1.2067 - accuracy: 0.7056 - val_loss: 1.1633 - val_accuracy: 0.7444 Epoch 5/30 45/45 [==============================] - 6s 126ms/step - loss: 1.1786 - accuracy: 0.6875 - val_loss: 1.0777 - val_accuracy: 0.7611 Epoch 6/30 45/45 [==============================] - 5s 108ms/step - loss: 1.1057 - accuracy: 0.7097 - val_loss: 1.0668 - val_accuracy: 0.7167 Epoch 7/30 45/45 [==============================] - 5s 108ms/step - loss: 1.0593 - accuracy: 0.7222 - val_loss: 1.0378 - val_accuracy: 0.7278 Epoch 8/30 45/45 [==============================] - 4s 94ms/step - loss: 1.0743 - accuracy: 0.6958 - val_loss: 1.0218 - val_accuracy: 0.7222 Epoch 9/30 45/45 [==============================] - 6s 123ms/step - loss: 1.0501 - accuracy: 0.7125 - val_loss: 1.0893 - val_accuracy: 0.6500 Epoch 10/30 45/45 [==============================] - 4s 100ms/step - loss: 1.0639 - accuracy: 0.7153 - val_loss: 1.0202 - val_accuracy: 0.7500 Epoch 11/30 45/45 [==============================] - 4s 96ms/step - loss: 1.0504 - accuracy: 0.7069 - val_loss: 0.9768 - val_accuracy: 0.7944 Epoch 12/30 45/45 [==============================] - 5s 121ms/step - loss: 1.0685 - accuracy: 0.7167 - val_loss: 1.0429 - val_accuracy: 0.7111 Epoch 13/30 45/45 [==============================] - 5s 122ms/step - loss: 1.0571 - accuracy: 0.7139 - val_loss: 0.9714 - val_accuracy: 0.7389 Epoch 14/30 45/45 [==============================] - 5s 100ms/step - loss: 1.0015 - accuracy: 0.7306 - val_loss: 0.9764 - val_accuracy: 0.7611 Epoch 15/30 45/45 [==============================] - 4s 95ms/step - loss: 1.0539 - accuracy: 0.7056 - val_loss: 0.9484 - val_accuracy: 0.8111 Epoch 16/30 45/45 [==============================] - 5s 113ms/step - loss: 1.0042 - accuracy: 0.7389 - val_loss: 0.9823 - val_accuracy: 0.7222 Epoch 17/30 45/45 [==============================] - 5s 100ms/step - loss: 0.9735 - accuracy: 0.7528 - val_loss: 0.9282 - val_accuracy: 0.8167 Epoch 18/30 45/45 [==============================] - 6s 124ms/step - loss: 0.9809 - accuracy: 0.7458 - val_loss: 0.9583 - val_accuracy: 0.7556 Epoch 19/30 45/45 [==============================] - 4s 94ms/step - loss: 0.9912 - accuracy: 0.7389 - val_loss: 0.9818 - val_accuracy: 0.7167 Epoch 20/30 45/45 [==============================] - 5s 100ms/step - loss: 0.9838 - accuracy: 0.7292 - val_loss: 0.9146 - val_accuracy: 0.7778 Epoch 21/30 45/45 [==============================] - 5s 118ms/step - loss: 0.9845 - accuracy: 0.7292 - val_loss: 0.9368 - val_accuracy: 0.8056 Epoch 22/30 45/45 [==============================] - 4s 99ms/step - loss: 0.9727 - accuracy: 0.7403 - val_loss: 0.9359 - val_accuracy: 0.7778 Epoch 23/30 45/45 [==============================] - 5s 107ms/step - loss: 0.9842 - accuracy: 0.7222 - val_loss: 0.9392 - val_accuracy: 0.7611 8/8 [==============================] - 1s 64ms/step Epoch 1/30 23/23 [==============================] - 6s 203ms/step - loss: 1.4600 - accuracy: 0.5958 - val_loss: 1.1009 - val_accuracy: 0.7167 Epoch 2/30 23/23 [==============================] - 4s 182ms/step - loss: 0.9170 - accuracy: 0.7889 - val_loss: 0.8237 - val_accuracy: 0.7667 Epoch 3/30 23/23 [==============================] - 5s 219ms/step - loss: 0.7200 - accuracy: 0.8319 - val_loss: 0.7084 - val_accuracy: 0.8000 Epoch 4/30 23/23 [==============================] - 4s 180ms/step - loss: 0.6159 - accuracy: 0.8556 - val_loss: 0.6408 - val_accuracy: 0.8444 Epoch 5/30 23/23 [==============================] - 5s 228ms/step - loss: 0.5472 - accuracy: 0.8681 - val_loss: 0.6128 - val_accuracy: 0.8444 Epoch 6/30 23/23 [==============================] - 4s 191ms/step - loss: 0.5094 - accuracy: 0.8861 - val_loss: 0.5887 - val_accuracy: 0.8556 Epoch 7/30 23/23 [==============================] - 4s 199ms/step - loss: 0.4477 - accuracy: 0.9125 - val_loss: 0.5366 - val_accuracy: 0.8500 Epoch 8/30 23/23 [==============================] - 5s 219ms/step - loss: 0.4679 - accuracy: 0.8792 - val_loss: 0.5614 - val_accuracy: 0.8278 Epoch 9/30 23/23 [==============================] - 4s 175ms/step - loss: 0.4397 - accuracy: 0.9000 - val_loss: 0.5769 - val_accuracy: 0.8389 Epoch 10/30 23/23 [==============================] - 5s 197ms/step - loss: 0.4299 - accuracy: 0.8986 - val_loss: 0.5542 - val_accuracy: 0.8667 8/8 [==============================] - 1s 62ms/step Epoch 1/30 23/23 [==============================] - 6s 194ms/step - loss: 4.7285 - accuracy: 0.5556 - val_loss: 3.2357 - val_accuracy: 0.6389 Epoch 2/30 23/23 [==============================] - 5s 210ms/step - loss: 2.4075 - accuracy: 0.7403 - val_loss: 1.7809 - val_accuracy: 0.7889 Epoch 3/30 23/23 [==============================] - 4s 184ms/step - loss: 1.4424 - accuracy: 0.8042 - val_loss: 1.2189 - val_accuracy: 0.7833 Epoch 4/30 23/23 [==============================] - 4s 193ms/step - loss: 1.0349 - accuracy: 0.8222 - val_loss: 0.9970 - val_accuracy: 0.8056 Epoch 5/30 23/23 [==============================] - 5s 236ms/step - loss: 0.8575 - accuracy: 0.8583 - val_loss: 0.8841 - val_accuracy: 0.8222 Epoch 6/30 23/23 [==============================] - 4s 179ms/step - loss: 0.7808 - accuracy: 0.8458 - val_loss: 0.9075 - val_accuracy: 0.7333 Epoch 7/30 23/23 [==============================] - 4s 186ms/step - loss: 0.7260 - accuracy: 0.8472 - val_loss: 0.7732 - val_accuracy: 0.8056 Epoch 8/30 23/23 [==============================] - 4s 191ms/step - loss: 0.6792 - accuracy: 0.8472 - val_loss: 0.8061 - val_accuracy: 0.8333 Epoch 9/30 23/23 [==============================] - 5s 235ms/step - loss: 0.6261 - accuracy: 0.8708 - val_loss: 0.6866 - val_accuracy: 0.8500 Epoch 10/30 23/23 [==============================] - 4s 187ms/step - loss: 0.6125 - accuracy: 0.8750 - val_loss: 0.7160 - val_accuracy: 0.8389 Epoch 11/30 23/23 [==============================] - 4s 190ms/step - loss: 0.6162 - accuracy: 0.8681 - val_loss: 0.6652 - val_accuracy: 0.7889 Epoch 12/30 23/23 [==============================] - 5s 214ms/step - loss: 0.5817 - accuracy: 0.8764 - val_loss: 0.6210 - val_accuracy: 0.8611 Epoch 13/30 23/23 [==============================] - 4s 183ms/step - loss: 0.5345 - accuracy: 0.9042 - val_loss: 0.6120 - val_accuracy: 0.8667 Epoch 14/30 23/23 [==============================] - 6s 283ms/step - loss: 0.5149 - accuracy: 0.9000 - val_loss: 0.5935 - val_accuracy: 0.8556 Epoch 15/30 23/23 [==============================] - 4s 179ms/step - loss: 0.5254 - accuracy: 0.8917 - val_loss: 0.6545 - val_accuracy: 0.8444 Epoch 16/30 23/23 [==============================] - 4s 193ms/step - loss: 0.5347 - accuracy: 0.8736 - val_loss: 0.5741 - val_accuracy: 0.8556 Epoch 17/30 23/23 [==============================] - 5s 229ms/step - loss: 0.5125 - accuracy: 0.8861 - val_loss: 0.5651 - val_accuracy: 0.8556 Epoch 18/30 23/23 [==============================] - 4s 189ms/step - loss: 0.5052 - accuracy: 0.8875 - val_loss: 0.6047 - val_accuracy: 0.8444 Epoch 19/30 23/23 [==============================] - 5s 214ms/step - loss: 0.4937 - accuracy: 0.8847 - val_loss: 0.5824 - val_accuracy: 0.8500 Epoch 20/30 23/23 [==============================] - 4s 189ms/step - loss: 0.4874 - accuracy: 0.8972 - val_loss: 0.5877 - val_accuracy: 0.8556 8/8 [==============================] - 1s 63ms/step Epoch 1/30 23/23 [==============================] - 6s 209ms/step - loss: 34.9768 - accuracy: 0.4472 - val_loss: 20.1086 - val_accuracy: 0.6333 Epoch 2/30 23/23 [==============================] - 4s 194ms/step - loss: 12.5870 - accuracy: 0.5958 - val_loss: 6.8516 - val_accuracy: 0.6556 Epoch 3/30 23/23 [==============================] - 5s 227ms/step - loss: 4.3379 - accuracy: 0.6806 - val_loss: 2.5542 - val_accuracy: 0.7222 Epoch 4/30 23/23 [==============================] - 4s 194ms/step - loss: 1.8453 - accuracy: 0.7528 - val_loss: 1.3916 - val_accuracy: 0.7611 Epoch 5/30 23/23 [==============================] - 5s 198ms/step - loss: 1.1966 - accuracy: 0.7528 - val_loss: 1.1278 - val_accuracy: 0.7056 Epoch 6/30 23/23 [==============================] - 5s 200ms/step - loss: 1.0418 - accuracy: 0.7792 - val_loss: 1.0214 - val_accuracy: 0.7833 Epoch 7/30 23/23 [==============================] - 4s 183ms/step - loss: 0.9659 - accuracy: 0.7903 - val_loss: 0.9736 - val_accuracy: 0.8000 Epoch 8/30 23/23 [==============================] - 5s 210ms/step - loss: 0.9258 - accuracy: 0.7986 - val_loss: 0.9598 - val_accuracy: 0.7611 Epoch 9/30 23/23 [==============================] - 4s 193ms/step - loss: 0.8761 - accuracy: 0.8139 - val_loss: 0.9330 - val_accuracy: 0.7667 Epoch 10/30 23/23 [==============================] - 4s 191ms/step - loss: 0.8755 - accuracy: 0.8125 - val_loss: 0.8911 - val_accuracy: 0.7944 Epoch 11/30 23/23 [==============================] - 6s 243ms/step - loss: 0.8626 - accuracy: 0.8014 - val_loss: 0.8622 - val_accuracy: 0.8056 Epoch 12/30 23/23 [==============================] - 4s 188ms/step - loss: 0.8633 - accuracy: 0.7917 - val_loss: 0.9841 - val_accuracy: 0.6778 Epoch 13/30 23/23 [==============================] - 4s 182ms/step - loss: 0.8628 - accuracy: 0.7917 - val_loss: 0.8887 - val_accuracy: 0.7722 Epoch 14/30 23/23 [==============================] - 5s 226ms/step - loss: 0.8378 - accuracy: 0.8069 - val_loss: 0.8718 - val_accuracy: 0.8167 8/8 [==============================] - 1s 62ms/step Epoch 1/30 23/23 [==============================] - 6s 201ms/step - loss: 1.5697 - accuracy: 0.5069 - val_loss: 1.1841 - val_accuracy: 0.6833 Epoch 2/30 23/23 [==============================] - 5s 226ms/step - loss: 1.0202 - accuracy: 0.7250 - val_loss: 0.8981 - val_accuracy: 0.7556 Epoch 3/30 23/23 [==============================] - 4s 191ms/step - loss: 0.7940 - accuracy: 0.8000 - val_loss: 0.7869 - val_accuracy: 0.7722 Epoch 4/30 23/23 [==============================] - 5s 212ms/step - loss: 0.6843 - accuracy: 0.8389 - val_loss: 0.6881 - val_accuracy: 0.8167 Epoch 5/30 23/23 [==============================] - 4s 181ms/step - loss: 0.5966 - accuracy: 0.8486 - val_loss: 0.6464 - val_accuracy: 0.8278 Epoch 6/30 23/23 [==============================] - 4s 178ms/step - loss: 0.5621 - accuracy: 0.8681 - val_loss: 0.6038 - val_accuracy: 0.8333 Epoch 7/30 23/23 [==============================] - 6s 241ms/step - loss: 0.5383 - accuracy: 0.8569 - val_loss: 0.6132 - val_accuracy: 0.8333 Epoch 8/30 23/23 [==============================] - 4s 190ms/step - loss: 0.5172 - accuracy: 0.8764 - val_loss: 0.5653 - val_accuracy: 0.8556 Epoch 9/30 23/23 [==============================] - 4s 180ms/step - loss: 0.4721 - accuracy: 0.8903 - val_loss: 0.5597 - val_accuracy: 0.8556 Epoch 10/30 23/23 [==============================] - 5s 229ms/step - loss: 0.4578 - accuracy: 0.8861 - val_loss: 0.5345 - val_accuracy: 0.8667 Epoch 11/30 23/23 [==============================] - 4s 179ms/step - loss: 0.4252 - accuracy: 0.9056 - val_loss: 0.5379 - val_accuracy: 0.8500 Epoch 12/30 23/23 [==============================] - 5s 225ms/step - loss: 0.4286 - accuracy: 0.8903 - val_loss: 0.5161 - val_accuracy: 0.8611 Epoch 13/30 23/23 [==============================] - 4s 193ms/step - loss: 0.4264 - accuracy: 0.9042 - val_loss: 0.4939 - val_accuracy: 0.8778 Epoch 14/30 23/23 [==============================] - 5s 232ms/step - loss: 0.4007 - accuracy: 0.9097 - val_loss: 0.4799 - val_accuracy: 0.8889 Epoch 15/30 23/23 [==============================] - 5s 220ms/step - loss: 0.4147 - accuracy: 0.8931 - val_loss: 0.4838 - val_accuracy: 0.8833 Epoch 16/30 23/23 [==============================] - 4s 189ms/step - loss: 0.3962 - accuracy: 0.9111 - val_loss: 0.5753 - val_accuracy: 0.8611 Epoch 17/30 23/23 [==============================] - 4s 179ms/step - loss: 0.3766 - accuracy: 0.9236 - val_loss: 0.4746 - val_accuracy: 0.8778 Epoch 18/30 23/23 [==============================] - 5s 240ms/step - loss: 0.3757 - accuracy: 0.9139 - val_loss: 0.4671 - val_accuracy: 0.8889 Epoch 19/30 23/23 [==============================] - 5s 201ms/step - loss: 0.3666 - accuracy: 0.9194 - val_loss: 0.4834 - val_accuracy: 0.8722 Epoch 20/30 23/23 [==============================] - 5s 196ms/step - loss: 0.3624 - accuracy: 0.9167 - val_loss: 0.4544 - val_accuracy: 0.8944 Epoch 21/30 23/23 [==============================] - 4s 192ms/step - loss: 0.3218 - accuracy: 0.9431 - val_loss: 0.4395 - val_accuracy: 0.8944 Epoch 22/30 23/23 [==============================] - 5s 240ms/step - loss: 0.3468 - accuracy: 0.9181 - val_loss: 0.4340 - val_accuracy: 0.8889 Epoch 23/30 23/23 [==============================] - 4s 187ms/step - loss: 0.3424 - accuracy: 0.9250 - val_loss: 0.4342 - val_accuracy: 0.8889 Epoch 24/30 23/23 [==============================] - 6s 268ms/step - loss: 0.3268 - accuracy: 0.9333 - val_loss: 0.4348 - val_accuracy: 0.9000 Epoch 25/30 23/23 [==============================] - 5s 196ms/step - loss: 0.3180 - accuracy: 0.9361 - val_loss: 0.4484 - val_accuracy: 0.9000 8/8 [==============================] - 1s 63ms/step Epoch 1/30 23/23 [==============================] - 7s 247ms/step - loss: 4.8685 - accuracy: 0.4958 - val_loss: 3.3176 - val_accuracy: 0.6833 Epoch 2/30 23/23 [==============================] - 4s 187ms/step - loss: 2.5286 - accuracy: 0.7333 - val_loss: 1.8899 - val_accuracy: 0.7500 Epoch 3/30 23/23 [==============================] - 5s 240ms/step - loss: 1.5615 - accuracy: 0.7583 - val_loss: 1.3534 - val_accuracy: 0.7333 Epoch 4/30 23/23 [==============================] - 5s 201ms/step - loss: 1.1604 - accuracy: 0.7944 - val_loss: 1.0550 - val_accuracy: 0.8222 Epoch 5/30 23/23 [==============================] - 5s 207ms/step - loss: 0.9612 - accuracy: 0.8181 - val_loss: 0.9527 - val_accuracy: 0.8056 Epoch 6/30 23/23 [==============================] - 4s 195ms/step - loss: 0.8433 - accuracy: 0.8389 - val_loss: 0.8418 - val_accuracy: 0.8278 Epoch 7/30 23/23 [==============================] - 5s 224ms/step - loss: 0.7726 - accuracy: 0.8486 - val_loss: 0.7869 - val_accuracy: 0.8444 Epoch 8/30 23/23 [==============================] - 4s 191ms/step - loss: 0.7214 - accuracy: 0.8458 - val_loss: 0.7408 - val_accuracy: 0.8389 Epoch 9/30 23/23 [==============================] - 5s 212ms/step - loss: 0.6968 - accuracy: 0.8375 - val_loss: 0.7218 - val_accuracy: 0.8500 Epoch 10/30 23/23 [==============================] - 4s 194ms/step - loss: 0.6574 - accuracy: 0.8569 - val_loss: 0.6992 - val_accuracy: 0.8389 Epoch 11/30 23/23 [==============================] - 5s 237ms/step - loss: 0.6137 - accuracy: 0.8681 - val_loss: 0.6576 - val_accuracy: 0.8444 Epoch 12/30 23/23 [==============================] - 4s 181ms/step - loss: 0.6157 - accuracy: 0.8667 - val_loss: 0.6333 - val_accuracy: 0.8722 Epoch 13/30 23/23 [==============================] - 5s 224ms/step - loss: 0.5968 - accuracy: 0.8764 - val_loss: 0.6512 - val_accuracy: 0.8222 Epoch 14/30 23/23 [==============================] - 4s 181ms/step - loss: 0.6084 - accuracy: 0.8500 - val_loss: 0.6662 - val_accuracy: 0.8389 Epoch 15/30 23/23 [==============================] - 4s 191ms/step - loss: 0.5923 - accuracy: 0.8681 - val_loss: 0.6269 - val_accuracy: 0.8500 Epoch 16/30 23/23 [==============================] - 5s 205ms/step - loss: 0.5554 - accuracy: 0.8681 - val_loss: 0.5969 - val_accuracy: 0.8500 Epoch 17/30 23/23 [==============================] - 4s 180ms/step - loss: 0.5745 - accuracy: 0.8583 - val_loss: 0.6001 - val_accuracy: 0.8556 Epoch 18/30 23/23 [==============================] - 5s 232ms/step - loss: 0.5518 - accuracy: 0.8847 - val_loss: 0.5996 - val_accuracy: 0.8389 Epoch 19/30 23/23 [==============================] - 4s 193ms/step - loss: 0.5614 - accuracy: 0.8750 - val_loss: 0.6229 - val_accuracy: 0.8444 8/8 [==============================] - 1s 63ms/step Epoch 1/30 23/23 [==============================] - 6s 220ms/step - loss: 34.8574 - accuracy: 0.4208 - val_loss: 20.0222 - val_accuracy: 0.6944 Epoch 2/30 23/23 [==============================] - 4s 191ms/step - loss: 12.6495 - accuracy: 0.6069 - val_loss: 6.7892 - val_accuracy: 0.7500 Epoch 3/30 23/23 [==============================] - 5s 218ms/step - loss: 4.3614 - accuracy: 0.6972 - val_loss: 2.5349 - val_accuracy: 0.7611 Epoch 4/30 23/23 [==============================] - 5s 230ms/step - loss: 1.8574 - accuracy: 0.7208 - val_loss: 1.4100 - val_accuracy: 0.7167 Epoch 5/30 23/23 [==============================] - 4s 183ms/step - loss: 1.2106 - accuracy: 0.7458 - val_loss: 1.1271 - val_accuracy: 0.7833 Epoch 6/30 23/23 [==============================] - 4s 190ms/step - loss: 1.0579 - accuracy: 0.7694 - val_loss: 1.0330 - val_accuracy: 0.7556 Epoch 7/30 23/23 [==============================] - 5s 226ms/step - loss: 0.9961 - accuracy: 0.7653 - val_loss: 0.9804 - val_accuracy: 0.7556 Epoch 8/30 23/23 [==============================] - 5s 231ms/step - loss: 0.9488 - accuracy: 0.7764 - val_loss: 0.9526 - val_accuracy: 0.7722 Epoch 9/30 23/23 [==============================] - 4s 186ms/step - loss: 0.9240 - accuracy: 0.7875 - val_loss: 0.9812 - val_accuracy: 0.7333 Epoch 10/30 23/23 [==============================] - 6s 242ms/step - loss: 0.9211 - accuracy: 0.7639 - val_loss: 0.9284 - val_accuracy: 0.7778 Epoch 11/30 23/23 [==============================] - 4s 182ms/step - loss: 0.8876 - accuracy: 0.8083 - val_loss: 0.8897 - val_accuracy: 0.7944 Epoch 12/30 23/23 [==============================] - 4s 179ms/step - loss: 0.9410 - accuracy: 0.7514 - val_loss: 0.9276 - val_accuracy: 0.7556 Epoch 13/30 23/23 [==============================] - 5s 235ms/step - loss: 0.9023 - accuracy: 0.7694 - val_loss: 0.8764 - val_accuracy: 0.8000 Epoch 14/30 23/23 [==============================] - 5s 225ms/step - loss: 0.8709 - accuracy: 0.7972 - val_loss: 0.8648 - val_accuracy: 0.7889 Epoch 15/30 23/23 [==============================] - 4s 191ms/step - loss: 0.8521 - accuracy: 0.7903 - val_loss: 0.9058 - val_accuracy: 0.7944 Epoch 16/30 23/23 [==============================] - 5s 227ms/step - loss: 0.8639 - accuracy: 0.7847 - val_loss: 0.8498 - val_accuracy: 0.7722 Epoch 17/30 23/23 [==============================] - 5s 208ms/step - loss: 0.8221 - accuracy: 0.8069 - val_loss: 0.8914 - val_accuracy: 0.7444 Epoch 18/30 23/23 [==============================] - 6s 242ms/step - loss: 0.8103 - accuracy: 0.8111 - val_loss: 0.8574 - val_accuracy: 0.8111 Epoch 19/30 23/23 [==============================] - 4s 179ms/step - loss: 0.8077 - accuracy: 0.7917 - val_loss: 1.0006 - val_accuracy: 0.7056 8/8 [==============================] - 1s 63ms/step Epoch 1/30 23/23 [==============================] - 7s 208ms/step - loss: 1.6170 - accuracy: 0.4903 - val_loss: 1.1984 - val_accuracy: 0.7056 Epoch 2/30 23/23 [==============================] - 4s 192ms/step - loss: 1.0687 - accuracy: 0.7125 - val_loss: 0.9838 - val_accuracy: 0.6944 Epoch 3/30 23/23 [==============================] - 5s 240ms/step - loss: 0.8741 - accuracy: 0.7722 - val_loss: 0.8114 - val_accuracy: 0.7889 Epoch 4/30 23/23 [==============================] - 5s 197ms/step - loss: 0.7513 - accuracy: 0.8056 - val_loss: 0.7331 - val_accuracy: 0.8000 Epoch 5/30 23/23 [==============================] - 5s 216ms/step - loss: 0.6678 - accuracy: 0.8347 - val_loss: 0.6886 - val_accuracy: 0.8111 Epoch 6/30 23/23 [==============================] - 4s 182ms/step - loss: 0.6567 - accuracy: 0.8264 - val_loss: 0.6606 - val_accuracy: 0.8167 Epoch 7/30 23/23 [==============================] - 5s 229ms/step - loss: 0.6076 - accuracy: 0.8431 - val_loss: 0.6173 - val_accuracy: 0.8333 Epoch 8/30 23/23 [==============================] - 5s 197ms/step - loss: 0.5551 - accuracy: 0.8597 - val_loss: 0.5966 - val_accuracy: 0.8278 Epoch 9/30 23/23 [==============================] - 4s 182ms/step - loss: 0.5433 - accuracy: 0.8764 - val_loss: 0.5775 - val_accuracy: 0.8278 Epoch 10/30 23/23 [==============================] - 5s 237ms/step - loss: 0.5081 - accuracy: 0.8653 - val_loss: 0.5574 - val_accuracy: 0.8500 Epoch 11/30 23/23 [==============================] - 4s 182ms/step - loss: 0.4889 - accuracy: 0.8875 - val_loss: 0.5570 - val_accuracy: 0.8500 Epoch 12/30 23/23 [==============================] - 4s 182ms/step - loss: 0.4774 - accuracy: 0.8889 - val_loss: 0.5444 - val_accuracy: 0.8389 Epoch 13/30 23/23 [==============================] - 5s 220ms/step - loss: 0.4702 - accuracy: 0.8847 - val_loss: 0.5353 - val_accuracy: 0.8667 Epoch 14/30 23/23 [==============================] - 4s 183ms/step - loss: 0.4748 - accuracy: 0.8806 - val_loss: 0.5143 - val_accuracy: 0.8500 Epoch 15/30 23/23 [==============================] - 5s 216ms/step - loss: 0.4571 - accuracy: 0.8958 - val_loss: 0.5564 - val_accuracy: 0.8444 Epoch 16/30 23/23 [==============================] - 4s 182ms/step - loss: 0.4487 - accuracy: 0.8917 - val_loss: 0.5194 - val_accuracy: 0.8778 Epoch 17/30 23/23 [==============================] - 4s 194ms/step - loss: 0.4352 - accuracy: 0.8972 - val_loss: 0.5032 - val_accuracy: 0.8667 Epoch 18/30 23/23 [==============================] - 5s 229ms/step - loss: 0.4211 - accuracy: 0.8903 - val_loss: 0.5539 - val_accuracy: 0.8444 Epoch 19/30 23/23 [==============================] - 4s 182ms/step - loss: 0.4338 - accuracy: 0.8917 - val_loss: 0.4881 - val_accuracy: 0.8778 Epoch 20/30 23/23 [==============================] - 4s 185ms/step - loss: 0.4243 - accuracy: 0.8972 - val_loss: 0.4787 - val_accuracy: 0.8667 Epoch 21/30 23/23 [==============================] - 5s 229ms/step - loss: 0.4075 - accuracy: 0.8972 - val_loss: 0.4776 - val_accuracy: 0.8722 Epoch 22/30 23/23 [==============================] - 5s 217ms/step - loss: 0.3835 - accuracy: 0.9222 - val_loss: 0.4642 - val_accuracy: 0.8833 Epoch 23/30 23/23 [==============================] - 4s 181ms/step - loss: 0.3949 - accuracy: 0.9097 - val_loss: 0.4834 - val_accuracy: 0.8611 Epoch 24/30 23/23 [==============================] - 4s 194ms/step - loss: 0.4084 - accuracy: 0.9069 - val_loss: 0.4787 - val_accuracy: 0.8944 Epoch 25/30 23/23 [==============================] - 5s 228ms/step - loss: 0.3975 - accuracy: 0.8917 - val_loss: 0.4587 - val_accuracy: 0.8667 Epoch 26/30 23/23 [==============================] - 5s 194ms/step - loss: 0.3846 - accuracy: 0.9139 - val_loss: 0.4674 - val_accuracy: 0.8722 Epoch 27/30 23/23 [==============================] - 5s 231ms/step - loss: 0.3762 - accuracy: 0.9083 - val_loss: 0.4725 - val_accuracy: 0.8778 Epoch 28/30 23/23 [==============================] - 4s 183ms/step - loss: 0.3789 - accuracy: 0.9167 - val_loss: 0.4660 - val_accuracy: 0.8889 8/8 [==============================] - 1s 62ms/step Epoch 1/30 23/23 [==============================] - 7s 242ms/step - loss: 5.0600 - accuracy: 0.3750 - val_loss: 3.4805 - val_accuracy: 0.6944 Epoch 2/30 23/23 [==============================] - 5s 205ms/step - loss: 2.7229 - accuracy: 0.6444 - val_loss: 2.0623 - val_accuracy: 0.7556 Epoch 3/30 23/23 [==============================] - 5s 205ms/step - loss: 1.7850 - accuracy: 0.7139 - val_loss: 1.4677 - val_accuracy: 0.7722 Epoch 4/30 23/23 [==============================] - 4s 184ms/step - loss: 1.3303 - accuracy: 0.7500 - val_loss: 1.2417 - val_accuracy: 0.7444 Epoch 5/30 23/23 [==============================] - 5s 240ms/step - loss: 1.1411 - accuracy: 0.7903 - val_loss: 1.0568 - val_accuracy: 0.7944 Epoch 6/30 23/23 [==============================] - 4s 192ms/step - loss: 0.9708 - accuracy: 0.8153 - val_loss: 0.9800 - val_accuracy: 0.7889 Epoch 7/30 23/23 [==============================] - 5s 207ms/step - loss: 0.9346 - accuracy: 0.7931 - val_loss: 0.8946 - val_accuracy: 0.8222 Epoch 8/30 23/23 [==============================] - 4s 188ms/step - loss: 0.8508 - accuracy: 0.8319 - val_loss: 0.8595 - val_accuracy: 0.7889 Epoch 9/30 23/23 [==============================] - 4s 193ms/step - loss: 0.7987 - accuracy: 0.8361 - val_loss: 0.8108 - val_accuracy: 0.8389 Epoch 10/30 23/23 [==============================] - 5s 237ms/step - loss: 0.7796 - accuracy: 0.8208 - val_loss: 0.7814 - val_accuracy: 0.8444 Epoch 11/30 23/23 [==============================] - 4s 192ms/step - loss: 0.7404 - accuracy: 0.8375 - val_loss: 0.7902 - val_accuracy: 0.8111 Epoch 12/30 23/23 [==============================] - 4s 183ms/step - loss: 0.7093 - accuracy: 0.8472 - val_loss: 0.7123 - val_accuracy: 0.8444 Epoch 13/30 23/23 [==============================] - 5s 239ms/step - loss: 0.6891 - accuracy: 0.8514 - val_loss: 0.7044 - val_accuracy: 0.8278 Epoch 14/30 23/23 [==============================] - 4s 186ms/step - loss: 0.6691 - accuracy: 0.8319 - val_loss: 0.6867 - val_accuracy: 0.8444 Epoch 15/30 23/23 [==============================] - 5s 200ms/step - loss: 0.6602 - accuracy: 0.8389 - val_loss: 0.6750 - val_accuracy: 0.8389 Epoch 16/30 23/23 [==============================] - 5s 201ms/step - loss: 0.6753 - accuracy: 0.8306 - val_loss: 0.6787 - val_accuracy: 0.8444 Epoch 17/30 23/23 [==============================] - 6s 241ms/step - loss: 0.6622 - accuracy: 0.8528 - val_loss: 0.6600 - val_accuracy: 0.8444 Epoch 18/30 23/23 [==============================] - 5s 198ms/step - loss: 0.6339 - accuracy: 0.8639 - val_loss: 0.6514 - val_accuracy: 0.8500 Epoch 19/30 23/23 [==============================] - 5s 215ms/step - loss: 0.6424 - accuracy: 0.8625 - val_loss: 0.6539 - val_accuracy: 0.8389 Epoch 20/30 23/23 [==============================] - 5s 200ms/step - loss: 0.6158 - accuracy: 0.8431 - val_loss: 0.6318 - val_accuracy: 0.8500 Epoch 21/30 23/23 [==============================] - 4s 191ms/step - loss: 0.6068 - accuracy: 0.8514 - val_loss: 0.6393 - val_accuracy: 0.8222 Epoch 22/30 23/23 [==============================] - 6s 244ms/step - loss: 0.6020 - accuracy: 0.8625 - val_loss: 0.6150 - val_accuracy: 0.8556 Epoch 23/30 23/23 [==============================] - 5s 197ms/step - loss: 0.5934 - accuracy: 0.8625 - val_loss: 0.6055 - val_accuracy: 0.8444 Epoch 24/30 23/23 [==============================] - 5s 197ms/step - loss: 0.5976 - accuracy: 0.8597 - val_loss: 0.6039 - val_accuracy: 0.8500 Epoch 25/30 23/23 [==============================] - 5s 192ms/step - loss: 0.5782 - accuracy: 0.8750 - val_loss: 0.6130 - val_accuracy: 0.8556 Epoch 26/30 23/23 [==============================] - 5s 194ms/step - loss: 0.5634 - accuracy: 0.8764 - val_loss: 0.5886 - val_accuracy: 0.8611 Epoch 27/30 23/23 [==============================] - 6s 242ms/step - loss: 0.5825 - accuracy: 0.8542 - val_loss: 0.6613 - val_accuracy: 0.8278 Epoch 28/30 23/23 [==============================] - 4s 182ms/step - loss: 0.5692 - accuracy: 0.8736 - val_loss: 0.5907 - val_accuracy: 0.8389 Epoch 29/30 23/23 [==============================] - 4s 185ms/step - loss: 0.6043 - accuracy: 0.8486 - val_loss: 0.6204 - val_accuracy: 0.8611 8/8 [==============================] - 1s 63ms/step Epoch 1/30 23/23 [==============================] - 6s 198ms/step - loss: 35.4581 - accuracy: 0.3181 - val_loss: 20.4495 - val_accuracy: 0.5167 Epoch 2/30 23/23 [==============================] - 4s 194ms/step - loss: 12.9532 - accuracy: 0.5097 - val_loss: 7.1420 - val_accuracy: 0.6111 Epoch 3/30 23/23 [==============================] - 5s 229ms/step - loss: 4.6482 - accuracy: 0.6236 - val_loss: 2.7512 - val_accuracy: 0.7111 Epoch 4/30 23/23 [==============================] - 5s 235ms/step - loss: 2.0659 - accuracy: 0.6903 - val_loss: 1.5373 - val_accuracy: 0.7222 Epoch 5/30 23/23 [==============================] - 4s 188ms/step - loss: 1.3896 - accuracy: 0.6875 - val_loss: 1.2257 - val_accuracy: 0.7278 Epoch 6/30 23/23 [==============================] - 4s 193ms/step - loss: 1.1859 - accuracy: 0.6958 - val_loss: 1.1216 - val_accuracy: 0.7167 Epoch 7/30 23/23 [==============================] - 5s 220ms/step - loss: 1.0933 - accuracy: 0.7472 - val_loss: 1.0824 - val_accuracy: 0.7500 Epoch 8/30 23/23 [==============================] - 5s 195ms/step - loss: 1.0577 - accuracy: 0.7542 - val_loss: 1.0623 - val_accuracy: 0.6722 Epoch 9/30 23/23 [==============================] - 5s 229ms/step - loss: 1.0503 - accuracy: 0.7236 - val_loss: 1.0105 - val_accuracy: 0.8000 Epoch 10/30 23/23 [==============================] - 4s 193ms/step - loss: 1.0175 - accuracy: 0.7458 - val_loss: 0.9795 - val_accuracy: 0.7778 Epoch 11/30 23/23 [==============================] - 6s 241ms/step - loss: 1.0020 - accuracy: 0.7514 - val_loss: 0.9881 - val_accuracy: 0.7111 Epoch 12/30 23/23 [==============================] - 5s 195ms/step - loss: 0.9603 - accuracy: 0.7583 - val_loss: 0.9534 - val_accuracy: 0.7833 Epoch 13/30 23/23 [==============================] - 5s 222ms/step - loss: 0.9814 - accuracy: 0.7375 - val_loss: 0.9507 - val_accuracy: 0.7667 Epoch 14/30 23/23 [==============================] - 4s 191ms/step - loss: 0.9641 - accuracy: 0.7528 - val_loss: 0.9547 - val_accuracy: 0.7333 Epoch 15/30 23/23 [==============================] - 4s 191ms/step - loss: 0.9156 - accuracy: 0.7861 - val_loss: 0.9539 - val_accuracy: 0.7833 Epoch 16/30 23/23 [==============================] - 5s 235ms/step - loss: 0.9378 - accuracy: 0.7611 - val_loss: 0.9495 - val_accuracy: 0.7500 Epoch 17/30 23/23 [==============================] - 4s 194ms/step - loss: 0.9294 - accuracy: 0.7667 - val_loss: 0.8902 - val_accuracy: 0.8111 Epoch 18/30 23/23 [==============================] - 4s 183ms/step - loss: 0.9445 - accuracy: 0.7500 - val_loss: 0.9204 - val_accuracy: 0.7722 Epoch 19/30 23/23 [==============================] - 5s 205ms/step - loss: 0.9143 - accuracy: 0.7681 - val_loss: 0.8788 - val_accuracy: 0.7889 Epoch 20/30 23/23 [==============================] - 4s 180ms/step - loss: 0.8846 - accuracy: 0.7750 - val_loss: 0.8799 - val_accuracy: 0.8000 Epoch 21/30 23/23 [==============================] - 5s 230ms/step - loss: 0.9433 - accuracy: 0.7403 - val_loss: 0.9026 - val_accuracy: 0.7611 Epoch 22/30 23/23 [==============================] - 4s 184ms/step - loss: 0.9118 - accuracy: 0.7708 - val_loss: 0.9009 - val_accuracy: 0.7889 8/8 [==============================] - 1s 63ms/step Epoch 1/30 12/12 [==============================] - 6s 375ms/step - loss: 1.7213 - accuracy: 0.4556 - val_loss: 1.3994 - val_accuracy: 0.6278 Epoch 2/30 12/12 [==============================] - 4s 389ms/step - loss: 1.1820 - accuracy: 0.6986 - val_loss: 1.1162 - val_accuracy: 0.6667 Epoch 3/30 12/12 [==============================] - 5s 435ms/step - loss: 0.9536 - accuracy: 0.7708 - val_loss: 0.9195 - val_accuracy: 0.7778 Epoch 4/30 12/12 [==============================] - 5s 394ms/step - loss: 0.8150 - accuracy: 0.8111 - val_loss: 0.7896 - val_accuracy: 0.7889 Epoch 5/30 12/12 [==============================] - 5s 366ms/step - loss: 0.6962 - accuracy: 0.8333 - val_loss: 0.7346 - val_accuracy: 0.8000 Epoch 6/30 12/12 [==============================] - 4s 369ms/step - loss: 0.6532 - accuracy: 0.8486 - val_loss: 0.6769 - val_accuracy: 0.8167 Epoch 7/30 12/12 [==============================] - 5s 439ms/step - loss: 0.5814 - accuracy: 0.8625 - val_loss: 0.6415 - val_accuracy: 0.8222 Epoch 8/30 12/12 [==============================] - 4s 369ms/step - loss: 0.5572 - accuracy: 0.8708 - val_loss: 0.6283 - val_accuracy: 0.8278 Epoch 9/30 12/12 [==============================] - 4s 343ms/step - loss: 0.5146 - accuracy: 0.8833 - val_loss: 0.5980 - val_accuracy: 0.8500 Epoch 10/30 12/12 [==============================] - 6s 452ms/step - loss: 0.4939 - accuracy: 0.8792 - val_loss: 0.5556 - val_accuracy: 0.8500 Epoch 11/30 12/12 [==============================] - 4s 348ms/step - loss: 0.4867 - accuracy: 0.9000 - val_loss: 0.5812 - val_accuracy: 0.8333 Epoch 12/30 12/12 [==============================] - 5s 456ms/step - loss: 0.4601 - accuracy: 0.8847 - val_loss: 0.5358 - val_accuracy: 0.8667 Epoch 13/30 12/12 [==============================] - 4s 369ms/step - loss: 0.4504 - accuracy: 0.8958 - val_loss: 0.5281 - val_accuracy: 0.8778 Epoch 14/30 12/12 [==============================] - 4s 360ms/step - loss: 0.4182 - accuracy: 0.9028 - val_loss: 0.5314 - val_accuracy: 0.8722 Epoch 15/30 12/12 [==============================] - 5s 431ms/step - loss: 0.4182 - accuracy: 0.9014 - val_loss: 0.5278 - val_accuracy: 0.8778 Epoch 16/30 12/12 [==============================] - 4s 347ms/step - loss: 0.4091 - accuracy: 0.9097 - val_loss: 0.4801 - val_accuracy: 0.8833 Epoch 17/30 12/12 [==============================] - 5s 424ms/step - loss: 0.3647 - accuracy: 0.9278 - val_loss: 0.4765 - val_accuracy: 0.8833 Epoch 18/30 12/12 [==============================] - 4s 343ms/step - loss: 0.3834 - accuracy: 0.9139 - val_loss: 0.4891 - val_accuracy: 0.8500 Epoch 19/30 12/12 [==============================] - 4s 342ms/step - loss: 0.3787 - accuracy: 0.9236 - val_loss: 0.4810 - val_accuracy: 0.8611 Epoch 20/30 12/12 [==============================] - 5s 427ms/step - loss: 0.3670 - accuracy: 0.9194 - val_loss: 0.4635 - val_accuracy: 0.8833 Epoch 21/30 12/12 [==============================] - 4s 338ms/step - loss: 0.3482 - accuracy: 0.9194 - val_loss: 0.4509 - val_accuracy: 0.8889 Epoch 22/30 12/12 [==============================] - 4s 352ms/step - loss: 0.3382 - accuracy: 0.9333 - val_loss: 0.4500 - val_accuracy: 0.8722 Epoch 23/30 12/12 [==============================] - 5s 367ms/step - loss: 0.3425 - accuracy: 0.9194 - val_loss: 0.4639 - val_accuracy: 0.8833 Epoch 24/30 12/12 [==============================] - 4s 365ms/step - loss: 0.3335 - accuracy: 0.9306 - val_loss: 0.4573 - val_accuracy: 0.8889 Epoch 25/30 12/12 [==============================] - 5s 446ms/step - loss: 0.3353 - accuracy: 0.9347 - val_loss: 0.4528 - val_accuracy: 0.8778 8/8 [==============================] - 1s 62ms/step Epoch 1/30 12/12 [==============================] - 6s 374ms/step - loss: 5.5355 - accuracy: 0.4889 - val_loss: 4.3810 - val_accuracy: 0.7056 Epoch 2/30 12/12 [==============================] - 5s 429ms/step - loss: 3.7021 - accuracy: 0.6722 - val_loss: 3.0056 - val_accuracy: 0.7389 Epoch 3/30 12/12 [==============================] - 4s 366ms/step - loss: 2.5195 - accuracy: 0.7958 - val_loss: 2.1694 - val_accuracy: 0.7111 Epoch 4/30 12/12 [==============================] - 5s 441ms/step - loss: 1.8356 - accuracy: 0.7667 - val_loss: 1.6170 - val_accuracy: 0.8056 Epoch 5/30 12/12 [==============================] - 5s 387ms/step - loss: 1.3875 - accuracy: 0.8111 - val_loss: 1.2772 - val_accuracy: 0.8167 Epoch 6/30 12/12 [==============================] - 5s 359ms/step - loss: 1.1288 - accuracy: 0.8236 - val_loss: 1.0823 - val_accuracy: 0.8111 Epoch 7/30 12/12 [==============================] - 4s 347ms/step - loss: 0.9835 - accuracy: 0.8333 - val_loss: 0.9597 - val_accuracy: 0.8111 Epoch 8/30 12/12 [==============================] - 5s 425ms/step - loss: 0.8500 - accuracy: 0.8722 - val_loss: 0.8736 - val_accuracy: 0.8167 Epoch 9/30 12/12 [==============================] - 4s 366ms/step - loss: 0.7863 - accuracy: 0.8597 - val_loss: 0.8161 - val_accuracy: 0.8389 Epoch 10/30 12/12 [==============================] - 4s 371ms/step - loss: 0.7474 - accuracy: 0.8458 - val_loss: 0.8031 - val_accuracy: 0.8000 Epoch 11/30 12/12 [==============================] - 5s 431ms/step - loss: 0.7079 - accuracy: 0.8569 - val_loss: 0.7355 - val_accuracy: 0.8389 Epoch 12/30 12/12 [==============================] - 5s 370ms/step - loss: 0.6570 - accuracy: 0.8694 - val_loss: 0.7215 - val_accuracy: 0.8333 Epoch 13/30 12/12 [==============================] - 5s 369ms/step - loss: 0.6315 - accuracy: 0.8764 - val_loss: 0.7122 - val_accuracy: 0.8278 Epoch 14/30 12/12 [==============================] - 4s 370ms/step - loss: 0.6317 - accuracy: 0.8708 - val_loss: 0.6949 - val_accuracy: 0.8500 Epoch 15/30 12/12 [==============================] - 5s 459ms/step - loss: 0.5745 - accuracy: 0.8972 - val_loss: 0.6604 - val_accuracy: 0.8444 Epoch 16/30 12/12 [==============================] - 5s 380ms/step - loss: 0.5627 - accuracy: 0.8931 - val_loss: 0.6682 - val_accuracy: 0.8278 Epoch 17/30 12/12 [==============================] - 4s 389ms/step - loss: 0.5807 - accuracy: 0.8722 - val_loss: 0.6352 - val_accuracy: 0.8389 Epoch 18/30 12/12 [==============================] - 4s 347ms/step - loss: 0.5531 - accuracy: 0.8889 - val_loss: 0.6218 - val_accuracy: 0.8500 Epoch 19/30 12/12 [==============================] - 5s 446ms/step - loss: 0.5319 - accuracy: 0.9083 - val_loss: 0.6135 - val_accuracy: 0.8556 Epoch 20/30 12/12 [==============================] - 4s 339ms/step - loss: 0.5350 - accuracy: 0.8833 - val_loss: 0.6223 - val_accuracy: 0.8556 Epoch 21/30 12/12 [==============================] - 4s 359ms/step - loss: 0.5140 - accuracy: 0.8972 - val_loss: 0.6100 - val_accuracy: 0.8556 Epoch 22/30 12/12 [==============================] - 5s 400ms/step - loss: 0.5146 - accuracy: 0.8917 - val_loss: 0.5884 - val_accuracy: 0.8778 Epoch 23/30 12/12 [==============================] - 4s 343ms/step - loss: 0.5223 - accuracy: 0.9000 - val_loss: 0.5894 - val_accuracy: 0.8667 Epoch 24/30 12/12 [==============================] - 5s 435ms/step - loss: 0.4961 - accuracy: 0.8986 - val_loss: 0.5934 - val_accuracy: 0.8556 Epoch 25/30 12/12 [==============================] - 4s 344ms/step - loss: 0.4721 - accuracy: 0.9069 - val_loss: 0.5702 - val_accuracy: 0.8667 Epoch 26/30 12/12 [==============================] - 4s 345ms/step - loss: 0.4680 - accuracy: 0.9042 - val_loss: 0.5445 - val_accuracy: 0.8889 Epoch 27/30 12/12 [==============================] - 5s 445ms/step - loss: 0.4628 - accuracy: 0.9069 - val_loss: 0.5751 - val_accuracy: 0.8389 Epoch 28/30 12/12 [==============================] - 4s 336ms/step - loss: 0.4665 - accuracy: 0.8972 - val_loss: 0.5516 - val_accuracy: 0.8667 Epoch 29/30 12/12 [==============================] - 4s 368ms/step - loss: 0.4637 - accuracy: 0.9111 - val_loss: 0.5411 - val_accuracy: 0.8611 Epoch 30/30 12/12 [==============================] - 4s 344ms/step - loss: 0.4637 - accuracy: 0.9083 - val_loss: 0.5565 - val_accuracy: 0.8611 8/8 [==============================] - 1s 62ms/step Epoch 1/30 12/12 [==============================] - 6s 439ms/step - loss: 42.3457 - accuracy: 0.3806 - val_loss: 32.5665 - val_accuracy: 0.3778 Epoch 2/30 12/12 [==============================] - 4s 339ms/step - loss: 25.9959 - accuracy: 0.5500 - val_loss: 19.0896 - val_accuracy: 0.6389 Epoch 3/30 12/12 [==============================] - 5s 428ms/step - loss: 14.7154 - accuracy: 0.6500 - val_loss: 10.8169 - val_accuracy: 0.6944 Epoch 4/30 12/12 [==============================] - 4s 344ms/step - loss: 8.4922 - accuracy: 0.6958 - val_loss: 6.0802 - val_accuracy: 0.6222 Epoch 5/30 12/12 [==============================] - 4s 343ms/step - loss: 4.6588 - accuracy: 0.7389 - val_loss: 3.5324 - val_accuracy: 0.6222 Epoch 6/30 12/12 [==============================] - 5s 434ms/step - loss: 2.8298 - accuracy: 0.7333 - val_loss: 2.1623 - val_accuracy: 0.7111 Epoch 7/30 12/12 [==============================] - 5s 386ms/step - loss: 1.7749 - accuracy: 0.7764 - val_loss: 1.5079 - val_accuracy: 0.7944 Epoch 8/30 12/12 [==============================] - 4s 346ms/step - loss: 1.3246 - accuracy: 0.7750 - val_loss: 1.1935 - val_accuracy: 0.7889 Epoch 9/30 12/12 [==============================] - 4s 364ms/step - loss: 1.0981 - accuracy: 0.7889 - val_loss: 1.0516 - val_accuracy: 0.7722 Epoch 10/30 12/12 [==============================] - 5s 450ms/step - loss: 0.9722 - accuracy: 0.8069 - val_loss: 0.9771 - val_accuracy: 0.7667 Epoch 11/30 12/12 [==============================] - 4s 346ms/step - loss: 0.9268 - accuracy: 0.7972 - val_loss: 0.9521 - val_accuracy: 0.7389 Epoch 12/30 12/12 [==============================] - 5s 399ms/step - loss: 0.9213 - accuracy: 0.7958 - val_loss: 0.9267 - val_accuracy: 0.7611 Epoch 13/30 12/12 [==============================] - 4s 343ms/step - loss: 0.8842 - accuracy: 0.8139 - val_loss: 0.9569 - val_accuracy: 0.7111 Epoch 14/30 12/12 [==============================] - 4s 347ms/step - loss: 0.8726 - accuracy: 0.7889 - val_loss: 0.8955 - val_accuracy: 0.7778 Epoch 15/30 12/12 [==============================] - 5s 438ms/step - loss: 0.8344 - accuracy: 0.8181 - val_loss: 0.9107 - val_accuracy: 0.7444 Epoch 16/30 12/12 [==============================] - 4s 361ms/step - loss: 0.8266 - accuracy: 0.8236 - val_loss: 0.8536 - val_accuracy: 0.8111 Epoch 17/30 12/12 [==============================] - 4s 361ms/step - loss: 0.8329 - accuracy: 0.7972 - val_loss: 0.9105 - val_accuracy: 0.7944 Epoch 18/30 12/12 [==============================] - 5s 390ms/step - loss: 0.8195 - accuracy: 0.8139 - val_loss: 0.8895 - val_accuracy: 0.8167 Epoch 19/30 12/12 [==============================] - 4s 374ms/step - loss: 0.8231 - accuracy: 0.7958 - val_loss: 0.8288 - val_accuracy: 0.8111 Epoch 20/30 12/12 [==============================] - 5s 386ms/step - loss: 0.7983 - accuracy: 0.8167 - val_loss: 0.8626 - val_accuracy: 0.7611 Epoch 21/30 12/12 [==============================] - 5s 381ms/step - loss: 0.7914 - accuracy: 0.8083 - val_loss: 0.8134 - val_accuracy: 0.8000 Epoch 22/30 12/12 [==============================] - 4s 334ms/step - loss: 0.7828 - accuracy: 0.8069 - val_loss: 0.8257 - val_accuracy: 0.7778 Epoch 23/30 12/12 [==============================] - 5s 453ms/step - loss: 0.7695 - accuracy: 0.8236 - val_loss: 0.8351 - val_accuracy: 0.7667 Epoch 24/30 12/12 [==============================] - 4s 339ms/step - loss: 0.7655 - accuracy: 0.8347 - val_loss: 0.8022 - val_accuracy: 0.8056 Epoch 25/30 12/12 [==============================] - 5s 376ms/step - loss: 0.7707 - accuracy: 0.8056 - val_loss: 0.8480 - val_accuracy: 0.7500 Epoch 26/30 12/12 [==============================] - 4s 338ms/step - loss: 0.7592 - accuracy: 0.8028 - val_loss: 0.8439 - val_accuracy: 0.7389 Epoch 27/30 12/12 [==============================] - 4s 361ms/step - loss: 0.7906 - accuracy: 0.8028 - val_loss: 0.8202 - val_accuracy: 0.7611 8/8 [==============================] - 1s 63ms/step Epoch 1/30 12/12 [==============================] - 7s 391ms/step - loss: 1.7057 - accuracy: 0.4431 - val_loss: 1.3326 - val_accuracy: 0.7556 Epoch 2/30 12/12 [==============================] - 5s 442ms/step - loss: 1.2106 - accuracy: 0.6708 - val_loss: 1.0593 - val_accuracy: 0.7222 Epoch 3/30 12/12 [==============================] - 4s 367ms/step - loss: 0.9491 - accuracy: 0.7736 - val_loss: 0.9067 - val_accuracy: 0.7667 Epoch 4/30 12/12 [==============================] - 5s 439ms/step - loss: 0.8247 - accuracy: 0.8069 - val_loss: 0.8225 - val_accuracy: 0.7778 Epoch 5/30 12/12 [==============================] - 5s 397ms/step - loss: 0.7499 - accuracy: 0.8083 - val_loss: 0.7394 - val_accuracy: 0.8111 Epoch 6/30 12/12 [==============================] - 5s 354ms/step - loss: 0.6540 - accuracy: 0.8431 - val_loss: 0.6904 - val_accuracy: 0.8278 Epoch 7/30 12/12 [==============================] - 4s 352ms/step - loss: 0.6255 - accuracy: 0.8500 - val_loss: 0.6685 - val_accuracy: 0.8222 Epoch 8/30 12/12 [==============================] - 5s 430ms/step - loss: 0.5662 - accuracy: 0.8653 - val_loss: 0.6366 - val_accuracy: 0.8222 Epoch 9/30 12/12 [==============================] - 4s 340ms/step - loss: 0.5413 - accuracy: 0.8806 - val_loss: 0.6096 - val_accuracy: 0.8389 Epoch 10/30 12/12 [==============================] - 5s 379ms/step - loss: 0.5124 - accuracy: 0.8944 - val_loss: 0.5964 - val_accuracy: 0.8389 Epoch 11/30 12/12 [==============================] - 4s 346ms/step - loss: 0.4957 - accuracy: 0.8764 - val_loss: 0.5671 - val_accuracy: 0.8444 Epoch 12/30 12/12 [==============================] - 5s 449ms/step - loss: 0.4857 - accuracy: 0.8764 - val_loss: 0.5683 - val_accuracy: 0.8444 Epoch 13/30 12/12 [==============================] - 5s 379ms/step - loss: 0.4967 - accuracy: 0.8681 - val_loss: 0.5599 - val_accuracy: 0.8556 Epoch 14/30 12/12 [==============================] - 5s 373ms/step - loss: 0.4673 - accuracy: 0.9014 - val_loss: 0.5568 - val_accuracy: 0.8611 Epoch 15/30 12/12 [==============================] - 6s 464ms/step - loss: 0.4526 - accuracy: 0.9042 - val_loss: 0.5348 - val_accuracy: 0.8611 Epoch 16/30 12/12 [==============================] - 4s 347ms/step - loss: 0.4224 - accuracy: 0.9069 - val_loss: 0.5102 - val_accuracy: 0.8611 Epoch 17/30 12/12 [==============================] - 5s 409ms/step - loss: 0.4134 - accuracy: 0.9069 - val_loss: 0.5390 - val_accuracy: 0.8667 Epoch 18/30 12/12 [==============================] - 5s 394ms/step - loss: 0.3994 - accuracy: 0.9083 - val_loss: 0.4955 - val_accuracy: 0.8722 Epoch 19/30 12/12 [==============================] - 4s 345ms/step - loss: 0.3963 - accuracy: 0.9028 - val_loss: 0.4942 - val_accuracy: 0.8889 Epoch 20/30 12/12 [==============================] - 6s 467ms/step - loss: 0.3917 - accuracy: 0.9069 - val_loss: 0.4800 - val_accuracy: 0.8722 Epoch 21/30 12/12 [==============================] - 4s 363ms/step - loss: 0.3754 - accuracy: 0.9181 - val_loss: 0.4797 - val_accuracy: 0.8722 Epoch 22/30 12/12 [==============================] - 5s 437ms/step - loss: 0.3601 - accuracy: 0.9236 - val_loss: 0.4757 - val_accuracy: 0.8944 Epoch 23/30 12/12 [==============================] - 4s 368ms/step - loss: 0.3714 - accuracy: 0.9139 - val_loss: 0.4833 - val_accuracy: 0.8889 Epoch 24/30 12/12 [==============================] - 4s 346ms/step - loss: 0.3733 - accuracy: 0.9153 - val_loss: 0.4655 - val_accuracy: 0.8667 Epoch 25/30 12/12 [==============================] - 5s 385ms/step - loss: 0.3549 - accuracy: 0.9319 - val_loss: 0.4624 - val_accuracy: 0.8778 Epoch 26/30 12/12 [==============================] - 4s 341ms/step - loss: 0.3605 - accuracy: 0.9153 - val_loss: 0.4843 - val_accuracy: 0.8889 Epoch 27/30 12/12 [==============================] - 5s 430ms/step - loss: 0.3233 - accuracy: 0.9403 - val_loss: 0.4692 - val_accuracy: 0.8944 Epoch 28/30 12/12 [==============================] - 4s 348ms/step - loss: 0.3670 - accuracy: 0.9042 - val_loss: 0.4543 - val_accuracy: 0.9000 Epoch 29/30 12/12 [==============================] - 5s 416ms/step - loss: 0.3430 - accuracy: 0.9208 - val_loss: 0.4451 - val_accuracy: 0.8778 Epoch 30/30 12/12 [==============================] - 4s 366ms/step - loss: 0.3276 - accuracy: 0.9236 - val_loss: 0.4585 - val_accuracy: 0.8667 8/8 [==============================] - 1s 62ms/step Epoch 1/30 12/12 [==============================] - 7s 401ms/step - loss: 5.5135 - accuracy: 0.4375 - val_loss: 4.4310 - val_accuracy: 0.6778 Epoch 2/30 12/12 [==============================] - 5s 373ms/step - loss: 3.7252 - accuracy: 0.6694 - val_loss: 3.0747 - val_accuracy: 0.7611 Epoch 3/30 12/12 [==============================] - 5s 436ms/step - loss: 2.6248 - accuracy: 0.7306 - val_loss: 2.1886 - val_accuracy: 0.7278 Epoch 4/30 12/12 [==============================] - 5s 390ms/step - loss: 1.8851 - accuracy: 0.8028 - val_loss: 1.6458 - val_accuracy: 0.7667 Epoch 5/30 12/12 [==============================] - 5s 409ms/step - loss: 1.4254 - accuracy: 0.8125 - val_loss: 1.3249 - val_accuracy: 0.7778 Epoch 6/30 12/12 [==============================] - 5s 374ms/step - loss: 1.1481 - accuracy: 0.8236 - val_loss: 1.1193 - val_accuracy: 0.8056 Epoch 7/30 12/12 [==============================] - 5s 452ms/step - loss: 0.9923 - accuracy: 0.8264 - val_loss: 0.9963 - val_accuracy: 0.8167 Epoch 8/30 12/12 [==============================] - 5s 392ms/step - loss: 0.8849 - accuracy: 0.8403 - val_loss: 0.8924 - val_accuracy: 0.8000 Epoch 9/30 12/12 [==============================] - 6s 504ms/step - loss: 0.8172 - accuracy: 0.8403 - val_loss: 0.8331 - val_accuracy: 0.8333 Epoch 10/30 12/12 [==============================] - 4s 356ms/step - loss: 0.7549 - accuracy: 0.8625 - val_loss: 0.8169 - val_accuracy: 0.8222 Epoch 11/30 12/12 [==============================] - 5s 395ms/step - loss: 0.7221 - accuracy: 0.8597 - val_loss: 0.7714 - val_accuracy: 0.8278 Epoch 12/30 12/12 [==============================] - 5s 412ms/step - loss: 0.6980 - accuracy: 0.8556 - val_loss: 0.7580 - val_accuracy: 0.8333 Epoch 13/30 12/12 [==============================] - 4s 370ms/step - loss: 0.6619 - accuracy: 0.8764 - val_loss: 0.7297 - val_accuracy: 0.8333 Epoch 14/30 12/12 [==============================] - 6s 464ms/step - loss: 0.6284 - accuracy: 0.8708 - val_loss: 0.7163 - val_accuracy: 0.8389 Epoch 15/30 12/12 [==============================] - 4s 361ms/step - loss: 0.6276 - accuracy: 0.8681 - val_loss: 0.6749 - val_accuracy: 0.8389 Epoch 16/30 12/12 [==============================] - 5s 422ms/step - loss: 0.5871 - accuracy: 0.8903 - val_loss: 0.6816 - val_accuracy: 0.8500 Epoch 17/30 12/12 [==============================] - 5s 446ms/step - loss: 0.6043 - accuracy: 0.8639 - val_loss: 0.6566 - val_accuracy: 0.8611 Epoch 18/30 12/12 [==============================] - 4s 371ms/step - loss: 0.6052 - accuracy: 0.8778 - val_loss: 0.6433 - val_accuracy: 0.8500 Epoch 19/30 12/12 [==============================] - 4s 360ms/step - loss: 0.5698 - accuracy: 0.8778 - val_loss: 0.6461 - val_accuracy: 0.8500 Epoch 20/30 12/12 [==============================] - 5s 414ms/step - loss: 0.5839 - accuracy: 0.8778 - val_loss: 0.6020 - val_accuracy: 0.8667 Epoch 21/30 12/12 [==============================] - 5s 414ms/step - loss: 0.5559 - accuracy: 0.8861 - val_loss: 0.6300 - val_accuracy: 0.8444 Epoch 22/30 12/12 [==============================] - 5s 398ms/step - loss: 0.5407 - accuracy: 0.8819 - val_loss: 0.5905 - val_accuracy: 0.8778 Epoch 23/30 12/12 [==============================] - 4s 346ms/step - loss: 0.5352 - accuracy: 0.8833 - val_loss: 0.5958 - val_accuracy: 0.8389 Epoch 24/30 12/12 [==============================] - 6s 503ms/step - loss: 0.5310 - accuracy: 0.8833 - val_loss: 0.5882 - val_accuracy: 0.8500 Epoch 25/30 12/12 [==============================] - 4s 366ms/step - loss: 0.5106 - accuracy: 0.8931 - val_loss: 0.6079 - val_accuracy: 0.8444 Epoch 26/30 12/12 [==============================] - 5s 370ms/step - loss: 0.5358 - accuracy: 0.8819 - val_loss: 0.5813 - val_accuracy: 0.8556 Epoch 27/30 12/12 [==============================] - 6s 449ms/step - loss: 0.5157 - accuracy: 0.8847 - val_loss: 0.5662 - val_accuracy: 0.8722 Epoch 28/30 12/12 [==============================] - 4s 369ms/step - loss: 0.5106 - accuracy: 0.8889 - val_loss: 0.5717 - val_accuracy: 0.8667 Epoch 29/30 12/12 [==============================] - 5s 388ms/step - loss: 0.5005 - accuracy: 0.8931 - val_loss: 0.5747 - val_accuracy: 0.8722 Epoch 30/30 12/12 [==============================] - 5s 365ms/step - loss: 0.5123 - accuracy: 0.8889 - val_loss: 0.5763 - val_accuracy: 0.8500 8/8 [==============================] - 1s 62ms/step Epoch 1/30 12/12 [==============================] - 6s 401ms/step - loss: 42.9931 - accuracy: 0.3722 - val_loss: 32.5778 - val_accuracy: 0.4500 Epoch 2/30 12/12 [==============================] - 4s 347ms/step - loss: 26.0588 - accuracy: 0.5125 - val_loss: 19.1391 - val_accuracy: 0.6167 Epoch 3/30 12/12 [==============================] - 7s 548ms/step - loss: 15.0447 - accuracy: 0.5986 - val_loss: 10.8816 - val_accuracy: 0.7167 Epoch 4/30 12/12 [==============================] - 5s 374ms/step - loss: 8.6235 - accuracy: 0.6458 - val_loss: 6.1275 - val_accuracy: 0.7389 Epoch 5/30 12/12 [==============================] - 5s 377ms/step - loss: 4.8589 - accuracy: 0.6972 - val_loss: 3.5650 - val_accuracy: 0.7000 Epoch 6/30 12/12 [==============================] - 5s 389ms/step - loss: 2.8735 - accuracy: 0.7319 - val_loss: 2.2275 - val_accuracy: 0.7222 Epoch 7/30 12/12 [==============================] - 4s 371ms/step - loss: 1.8453 - accuracy: 0.7611 - val_loss: 1.5499 - val_accuracy: 0.7611 Epoch 8/30 12/12 [==============================] - 5s 469ms/step - loss: 1.3727 - accuracy: 0.7597 - val_loss: 1.2571 - val_accuracy: 0.7056 Epoch 9/30 12/12 [==============================] - 5s 374ms/step - loss: 1.1509 - accuracy: 0.7847 - val_loss: 1.0898 - val_accuracy: 0.7389 Epoch 10/30 12/12 [==============================] - 4s 381ms/step - loss: 1.0204 - accuracy: 0.7736 - val_loss: 1.0040 - val_accuracy: 0.7889 Epoch 11/30 12/12 [==============================] - 5s 458ms/step - loss: 0.9808 - accuracy: 0.7667 - val_loss: 0.9688 - val_accuracy: 0.7778 Epoch 12/30 12/12 [==============================] - 5s 385ms/step - loss: 0.9573 - accuracy: 0.7778 - val_loss: 1.0055 - val_accuracy: 0.7611 Epoch 13/30 12/12 [==============================] - 5s 410ms/step - loss: 0.9174 - accuracy: 0.7917 - val_loss: 0.9630 - val_accuracy: 0.7389 Epoch 14/30 12/12 [==============================] - 4s 358ms/step - loss: 0.8900 - accuracy: 0.8014 - val_loss: 0.9483 - val_accuracy: 0.7167 Epoch 15/30 12/12 [==============================] - 5s 442ms/step - loss: 0.8970 - accuracy: 0.7806 - val_loss: 0.8977 - val_accuracy: 0.8000 Epoch 16/30 12/12 [==============================] - 4s 357ms/step - loss: 0.8756 - accuracy: 0.7819 - val_loss: 0.9138 - val_accuracy: 0.7667 Epoch 17/30 12/12 [==============================] - 4s 346ms/step - loss: 0.8663 - accuracy: 0.8069 - val_loss: 0.9250 - val_accuracy: 0.7556 Epoch 18/30 12/12 [==============================] - 6s 472ms/step - loss: 0.8335 - accuracy: 0.8153 - val_loss: 0.8884 - val_accuracy: 0.7778 Epoch 19/30 12/12 [==============================] - 5s 374ms/step - loss: 0.8719 - accuracy: 0.7778 - val_loss: 0.8969 - val_accuracy: 0.7778 Epoch 20/30 12/12 [==============================] - 5s 427ms/step - loss: 0.8577 - accuracy: 0.7819 - val_loss: 0.8621 - val_accuracy: 0.7944 Epoch 21/30 12/12 [==============================] - 5s 355ms/step - loss: 0.8176 - accuracy: 0.8028 - val_loss: 0.8506 - val_accuracy: 0.7778 Epoch 22/30 12/12 [==============================] - 4s 354ms/step - loss: 0.8127 - accuracy: 0.8083 - val_loss: 0.8437 - val_accuracy: 0.7722 Epoch 23/30 12/12 [==============================] - 5s 453ms/step - loss: 0.8210 - accuracy: 0.8250 - val_loss: 0.8921 - val_accuracy: 0.7611 Epoch 24/30 12/12 [==============================] - 4s 372ms/step - loss: 0.8417 - accuracy: 0.7931 - val_loss: 0.8993 - val_accuracy: 0.7667 Epoch 25/30 12/12 [==============================] - 5s 373ms/step - loss: 0.7852 - accuracy: 0.8194 - val_loss: 0.8204 - val_accuracy: 0.8167 Epoch 26/30 12/12 [==============================] - 5s 399ms/step - loss: 0.8026 - accuracy: 0.8167 - val_loss: 0.8470 - val_accuracy: 0.7833 Epoch 27/30 12/12 [==============================] - 5s 381ms/step - loss: 0.8119 - accuracy: 0.8028 - val_loss: 0.8093 - val_accuracy: 0.8333 Epoch 28/30 12/12 [==============================] - 5s 453ms/step - loss: 0.7845 - accuracy: 0.8222 - val_loss: 0.8131 - val_accuracy: 0.8111 Epoch 29/30 12/12 [==============================] - 5s 373ms/step - loss: 0.7844 - accuracy: 0.8014 - val_loss: 0.8482 - val_accuracy: 0.7556 Epoch 30/30 12/12 [==============================] - 5s 373ms/step - loss: 0.7945 - accuracy: 0.8111 - val_loss: 0.7815 - val_accuracy: 0.8333 8/8 [==============================] - 1s 63ms/step Epoch 1/30 12/12 [==============================] - 6s 393ms/step - loss: 1.8820 - accuracy: 0.3403 - val_loss: 1.4526 - val_accuracy: 0.7000 Epoch 2/30 12/12 [==============================] - 5s 384ms/step - loss: 1.3830 - accuracy: 0.5972 - val_loss: 1.2124 - val_accuracy: 0.6556 Epoch 3/30 12/12 [==============================] - 4s 359ms/step - loss: 1.0551 - accuracy: 0.7194 - val_loss: 1.0003 - val_accuracy: 0.7444 Epoch 4/30 12/12 [==============================] - 5s 454ms/step - loss: 0.9317 - accuracy: 0.7514 - val_loss: 0.9022 - val_accuracy: 0.7556 Epoch 5/30 12/12 [==============================] - 5s 387ms/step - loss: 0.8582 - accuracy: 0.7667 - val_loss: 0.8058 - val_accuracy: 0.7889 Epoch 6/30 12/12 [==============================] - 4s 358ms/step - loss: 0.7747 - accuracy: 0.8083 - val_loss: 0.7622 - val_accuracy: 0.7833 Epoch 7/30 12/12 [==============================] - 5s 374ms/step - loss: 0.6996 - accuracy: 0.8125 - val_loss: 0.7106 - val_accuracy: 0.8278 Epoch 8/30 12/12 [==============================] - 5s 409ms/step - loss: 0.6936 - accuracy: 0.8097 - val_loss: 0.6942 - val_accuracy: 0.8167 Epoch 9/30 12/12 [==============================] - 6s 497ms/step - loss: 0.6513 - accuracy: 0.8222 - val_loss: 0.6533 - val_accuracy: 0.8222 Epoch 10/30 12/12 [==============================] - 5s 373ms/step - loss: 0.5983 - accuracy: 0.8583 - val_loss: 0.6346 - val_accuracy: 0.8222 Epoch 11/30 12/12 [==============================] - 5s 387ms/step - loss: 0.5961 - accuracy: 0.8583 - val_loss: 0.6396 - val_accuracy: 0.8278 Epoch 12/30 12/12 [==============================] - 5s 379ms/step - loss: 0.5468 - accuracy: 0.8778 - val_loss: 0.5999 - val_accuracy: 0.8333 Epoch 13/30 12/12 [==============================] - 5s 439ms/step - loss: 0.5650 - accuracy: 0.8653 - val_loss: 0.5833 - val_accuracy: 0.8389 Epoch 14/30 12/12 [==============================] - 4s 358ms/step - loss: 0.5117 - accuracy: 0.8792 - val_loss: 0.5799 - val_accuracy: 0.8500 Epoch 15/30 12/12 [==============================] - 4s 352ms/step - loss: 0.5153 - accuracy: 0.8778 - val_loss: 0.5712 - val_accuracy: 0.8500 Epoch 16/30 12/12 [==============================] - 6s 476ms/step - loss: 0.4854 - accuracy: 0.8736 - val_loss: 0.5481 - val_accuracy: 0.8556 Epoch 17/30 12/12 [==============================] - 5s 379ms/step - loss: 0.4986 - accuracy: 0.8778 - val_loss: 0.5422 - val_accuracy: 0.8611 Epoch 18/30 12/12 [==============================] - 5s 429ms/step - loss: 0.4599 - accuracy: 0.8889 - val_loss: 0.5536 - val_accuracy: 0.8444 Epoch 19/30 12/12 [==============================] - 5s 379ms/step - loss: 0.4638 - accuracy: 0.8833 - val_loss: 0.5258 - val_accuracy: 0.8667 Epoch 20/30 12/12 [==============================] - 5s 461ms/step - loss: 0.4638 - accuracy: 0.8903 - val_loss: 0.5449 - val_accuracy: 0.8556 Epoch 21/30 12/12 [==============================] - 5s 406ms/step - loss: 0.4571 - accuracy: 0.8917 - val_loss: 0.5024 - val_accuracy: 0.8722 Epoch 22/30 12/12 [==============================] - 6s 475ms/step - loss: 0.4451 - accuracy: 0.8847 - val_loss: 0.5104 - val_accuracy: 0.8611 Epoch 23/30 12/12 [==============================] - 4s 360ms/step - loss: 0.4564 - accuracy: 0.8806 - val_loss: 0.5193 - val_accuracy: 0.8667 Epoch 24/30 12/12 [==============================] - 5s 376ms/step - loss: 0.4362 - accuracy: 0.9069 - val_loss: 0.4922 - val_accuracy: 0.8833 Epoch 25/30 12/12 [==============================] - 6s 453ms/step - loss: 0.4309 - accuracy: 0.8917 - val_loss: 0.5039 - val_accuracy: 0.8611 Epoch 26/30 12/12 [==============================] - 5s 420ms/step - loss: 0.4515 - accuracy: 0.8778 - val_loss: 0.4755 - val_accuracy: 0.8722 Epoch 27/30 12/12 [==============================] - 5s 367ms/step - loss: 0.4057 - accuracy: 0.9028 - val_loss: 0.4941 - val_accuracy: 0.8944 Epoch 28/30 12/12 [==============================] - 4s 347ms/step - loss: 0.4015 - accuracy: 0.9069 - val_loss: 0.4825 - val_accuracy: 0.8722 Epoch 29/30 12/12 [==============================] - 6s 474ms/step - loss: 0.3830 - accuracy: 0.9056 - val_loss: 0.4807 - val_accuracy: 0.8833 8/8 [==============================] - 1s 63ms/step Epoch 1/30 12/12 [==============================] - 6s 384ms/step - loss: 5.7380 - accuracy: 0.3694 - val_loss: 4.5014 - val_accuracy: 0.6222 Epoch 2/30 12/12 [==============================] - 4s 358ms/step - loss: 3.9411 - accuracy: 0.5611 - val_loss: 3.1938 - val_accuracy: 0.6389 Epoch 3/30 12/12 [==============================] - 5s 423ms/step - loss: 2.7834 - accuracy: 0.6667 - val_loss: 2.3123 - val_accuracy: 0.7556 Epoch 4/30 12/12 [==============================] - 5s 370ms/step - loss: 2.0424 - accuracy: 0.7639 - val_loss: 1.7815 - val_accuracy: 0.7667 Epoch 5/30 12/12 [==============================] - 4s 357ms/step - loss: 1.6264 - accuracy: 0.7500 - val_loss: 1.4807 - val_accuracy: 0.7611 Epoch 6/30 12/12 [==============================] - 5s 460ms/step - loss: 1.3604 - accuracy: 0.7542 - val_loss: 1.2458 - val_accuracy: 0.7778 Epoch 7/30 12/12 [==============================] - 5s 376ms/step - loss: 1.1343 - accuracy: 0.8181 - val_loss: 1.0960 - val_accuracy: 0.7944 Epoch 8/30 12/12 [==============================] - 5s 392ms/step - loss: 1.0617 - accuracy: 0.7986 - val_loss: 1.0303 - val_accuracy: 0.7889 Epoch 9/30 12/12 [==============================] - 5s 397ms/step - loss: 0.9682 - accuracy: 0.8181 - val_loss: 0.9710 - val_accuracy: 0.7944 Epoch 10/30 12/12 [==============================] - 5s 383ms/step - loss: 0.9137 - accuracy: 0.8125 - val_loss: 0.8994 - val_accuracy: 0.8167 Epoch 11/30 12/12 [==============================] - 5s 478ms/step - loss: 0.8597 - accuracy: 0.8139 - val_loss: 0.8540 - val_accuracy: 0.8278 Epoch 12/30 12/12 [==============================] - 5s 377ms/step - loss: 0.8184 - accuracy: 0.8333 - val_loss: 0.8356 - val_accuracy: 0.8222 Epoch 13/30 12/12 [==============================] - 4s 359ms/step - loss: 0.7922 - accuracy: 0.8347 - val_loss: 0.8013 - val_accuracy: 0.8278 Epoch 14/30 12/12 [==============================] - 6s 457ms/step - loss: 0.7642 - accuracy: 0.8319 - val_loss: 0.7739 - val_accuracy: 0.8222 Epoch 15/30 12/12 [==============================] - 5s 372ms/step - loss: 0.7483 - accuracy: 0.8500 - val_loss: 0.7819 - val_accuracy: 0.8167 Epoch 16/30 12/12 [==============================] - 5s 390ms/step - loss: 0.7315 - accuracy: 0.8306 - val_loss: 0.7364 - val_accuracy: 0.8500 Epoch 17/30 12/12 [==============================] - 5s 378ms/step - loss: 0.6920 - accuracy: 0.8444 - val_loss: 0.7188 - val_accuracy: 0.8222 Epoch 18/30 12/12 [==============================] - 4s 382ms/step - loss: 0.7066 - accuracy: 0.8319 - val_loss: 0.7364 - val_accuracy: 0.8111 Epoch 19/30 12/12 [==============================] - 5s 457ms/step - loss: 0.6526 - accuracy: 0.8681 - val_loss: 0.6837 - val_accuracy: 0.8500 Epoch 20/30 12/12 [==============================] - 4s 351ms/step - loss: 0.6636 - accuracy: 0.8569 - val_loss: 0.6951 - val_accuracy: 0.8500 Epoch 21/30 12/12 [==============================] - 5s 399ms/step - loss: 0.6375 - accuracy: 0.8681 - val_loss: 0.6837 - val_accuracy: 0.8556 Epoch 22/30 12/12 [==============================] - 5s 370ms/step - loss: 0.6284 - accuracy: 0.8472 - val_loss: 0.6615 - val_accuracy: 0.8333 Epoch 23/30 12/12 [==============================] - 4s 360ms/step - loss: 0.6208 - accuracy: 0.8722 - val_loss: 0.6578 - val_accuracy: 0.8444 Epoch 24/30 12/12 [==============================] - 5s 458ms/step - loss: 0.6177 - accuracy: 0.8653 - val_loss: 0.6384 - val_accuracy: 0.8444 Epoch 25/30 12/12 [==============================] - 5s 385ms/step - loss: 0.6147 - accuracy: 0.8736 - val_loss: 0.6377 - val_accuracy: 0.8389 Epoch 26/30 12/12 [==============================] - 5s 404ms/step - loss: 0.5930 - accuracy: 0.8722 - val_loss: 0.6288 - val_accuracy: 0.8556 Epoch 27/30 12/12 [==============================] - 5s 394ms/step - loss: 0.6128 - accuracy: 0.8542 - val_loss: 0.6418 - val_accuracy: 0.8333 Epoch 28/30 12/12 [==============================] - 5s 381ms/step - loss: 0.5916 - accuracy: 0.8597 - val_loss: 0.6282 - val_accuracy: 0.8611 Epoch 29/30 12/12 [==============================] - 5s 452ms/step - loss: 0.5814 - accuracy: 0.8653 - val_loss: 0.6145 - val_accuracy: 0.8444 Epoch 30/30 12/12 [==============================] - 4s 371ms/step - loss: 0.5894 - accuracy: 0.8667 - val_loss: 0.6307 - val_accuracy: 0.8500 8/8 [==============================] - 1s 63ms/step Epoch 1/30 12/12 [==============================] - 7s 496ms/step - loss: 42.9927 - accuracy: 0.3222 - val_loss: 32.7232 - val_accuracy: 0.3889 Epoch 2/30 12/12 [==============================] - 4s 358ms/step - loss: 25.8089 - accuracy: 0.4528 - val_loss: 19.3384 - val_accuracy: 0.6611 Epoch 3/30 12/12 [==============================] - 6s 445ms/step - loss: 15.0504 - accuracy: 0.5597 - val_loss: 11.1095 - val_accuracy: 0.6278 Epoch 4/30 12/12 [==============================] - 5s 413ms/step - loss: 8.7159 - accuracy: 0.6306 - val_loss: 6.3575 - val_accuracy: 0.6333 Epoch 5/30 12/12 [==============================] - 4s 358ms/step - loss: 5.0062 - accuracy: 0.6722 - val_loss: 3.7336 - val_accuracy: 0.7056 Epoch 6/30 12/12 [==============================] - 4s 347ms/step - loss: 3.0091 - accuracy: 0.7056 - val_loss: 2.3704 - val_accuracy: 0.6944 Epoch 7/30 12/12 [==============================] - 6s 485ms/step - loss: 2.0155 - accuracy: 0.7194 - val_loss: 1.6539 - val_accuracy: 0.7667 Epoch 8/30 12/12 [==============================] - 5s 389ms/step - loss: 1.4956 - accuracy: 0.7403 - val_loss: 1.3304 - val_accuracy: 0.7611 Epoch 9/30 12/12 [==============================] - 5s 389ms/step - loss: 1.2401 - accuracy: 0.7472 - val_loss: 1.1785 - val_accuracy: 0.7333 Epoch 10/30 12/12 [==============================] - 4s 361ms/step - loss: 1.1358 - accuracy: 0.7625 - val_loss: 1.0951 - val_accuracy: 0.7444 Epoch 11/30 12/12 [==============================] - 5s 456ms/step - loss: 1.0814 - accuracy: 0.7347 - val_loss: 1.0678 - val_accuracy: 0.7389 Epoch 12/30 12/12 [==============================] - 5s 374ms/step - loss: 1.0360 - accuracy: 0.7528 - val_loss: 1.0065 - val_accuracy: 0.8000 Epoch 13/30 12/12 [==============================] - 6s 470ms/step - loss: 1.0256 - accuracy: 0.7319 - val_loss: 0.9861 - val_accuracy: 0.7944 Epoch 14/30 12/12 [==============================] - 5s 379ms/step - loss: 0.9789 - accuracy: 0.7569 - val_loss: 0.9772 - val_accuracy: 0.7389 Epoch 15/30 12/12 [==============================] - 5s 420ms/step - loss: 0.9744 - accuracy: 0.7653 - val_loss: 0.9654 - val_accuracy: 0.7944 Epoch 16/30 12/12 [==============================] - 4s 354ms/step - loss: 0.9798 - accuracy: 0.7500 - val_loss: 0.9551 - val_accuracy: 0.7778 Epoch 17/30 12/12 [==============================] - 5s 374ms/step - loss: 0.9409 - accuracy: 0.7792 - val_loss: 0.9324 - val_accuracy: 0.8000 Epoch 18/30 12/12 [==============================] - 6s 468ms/step - loss: 0.9360 - accuracy: 0.7764 - val_loss: 0.9144 - val_accuracy: 0.8056 Epoch 19/30 12/12 [==============================] - 5s 408ms/step - loss: 0.9114 - accuracy: 0.7847 - val_loss: 0.9006 - val_accuracy: 0.7944 Epoch 20/30 12/12 [==============================] - 5s 360ms/step - loss: 0.8908 - accuracy: 0.8000 - val_loss: 0.9086 - val_accuracy: 0.7833 Epoch 21/30 12/12 [==============================] - 4s 355ms/step - loss: 0.9088 - accuracy: 0.7556 - val_loss: 0.8882 - val_accuracy: 0.8056 Epoch 22/30 12/12 [==============================] - 5s 441ms/step - loss: 0.9140 - accuracy: 0.7583 - val_loss: 0.8946 - val_accuracy: 0.7722 Epoch 23/30 12/12 [==============================] - 4s 351ms/step - loss: 0.9255 - accuracy: 0.7611 - val_loss: 0.8956 - val_accuracy: 0.7833 Epoch 24/30 12/12 [==============================] - 5s 376ms/step - loss: 0.8852 - accuracy: 0.7764 - val_loss: 0.8894 - val_accuracy: 0.7778 8/8 [==============================] - 1s 63ms/step Epoch 1/30 6/6 [==============================] - 6s 773ms/step - loss: 1.8618 - accuracy: 0.3556 - val_loss: 1.6586 - val_accuracy: 0.4889 Epoch 2/30 6/6 [==============================] - 4s 707ms/step - loss: 1.4792 - accuracy: 0.6000 - val_loss: 1.3689 - val_accuracy: 0.6944 Epoch 3/30 6/6 [==============================] - 5s 870ms/step - loss: 1.2422 - accuracy: 0.7097 - val_loss: 1.2112 - val_accuracy: 0.6444 Epoch 4/30 6/6 [==============================] - 5s 740ms/step - loss: 1.0863 - accuracy: 0.7264 - val_loss: 1.0503 - val_accuracy: 0.7556 Epoch 5/30 6/6 [==============================] - 5s 874ms/step - loss: 0.9327 - accuracy: 0.7806 - val_loss: 0.9417 - val_accuracy: 0.7389 Epoch 6/30 6/6 [==============================] - 5s 749ms/step - loss: 0.8432 - accuracy: 0.8083 - val_loss: 0.8615 - val_accuracy: 0.7611 Epoch 7/30 6/6 [==============================] - 6s 895ms/step - loss: 0.7595 - accuracy: 0.8292 - val_loss: 0.7851 - val_accuracy: 0.7944 Epoch 8/30 6/6 [==============================] - 4s 775ms/step - loss: 0.7284 - accuracy: 0.8375 - val_loss: 0.7498 - val_accuracy: 0.7944 Epoch 9/30 6/6 [==============================] - 5s 863ms/step - loss: 0.6458 - accuracy: 0.8444 - val_loss: 0.7054 - val_accuracy: 0.8167 Epoch 10/30 6/6 [==============================] - 5s 747ms/step - loss: 0.6095 - accuracy: 0.8611 - val_loss: 0.6677 - val_accuracy: 0.8278 Epoch 11/30 6/6 [==============================] - 6s 861ms/step - loss: 0.5556 - accuracy: 0.8736 - val_loss: 0.6700 - val_accuracy: 0.8056 Epoch 12/30 6/6 [==============================] - 4s 701ms/step - loss: 0.5622 - accuracy: 0.8625 - val_loss: 0.6202 - val_accuracy: 0.8333 Epoch 13/30 6/6 [==============================] - 5s 916ms/step - loss: 0.5038 - accuracy: 0.8833 - val_loss: 0.6126 - val_accuracy: 0.8333 Epoch 14/30 6/6 [==============================] - 5s 757ms/step - loss: 0.5134 - accuracy: 0.8861 - val_loss: 0.5845 - val_accuracy: 0.8278 Epoch 15/30 6/6 [==============================] - 6s 922ms/step - loss: 0.5012 - accuracy: 0.8847 - val_loss: 0.5637 - val_accuracy: 0.8444 Epoch 16/30 6/6 [==============================] - 5s 754ms/step - loss: 0.4748 - accuracy: 0.9028 - val_loss: 0.5543 - val_accuracy: 0.8444 Epoch 17/30 6/6 [==============================] - 5s 697ms/step - loss: 0.4529 - accuracy: 0.9069 - val_loss: 0.5453 - val_accuracy: 0.8500 Epoch 18/30 6/6 [==============================] - 4s 693ms/step - loss: 0.4496 - accuracy: 0.8972 - val_loss: 0.5330 - val_accuracy: 0.8611 Epoch 19/30 6/6 [==============================] - 5s 910ms/step - loss: 0.4172 - accuracy: 0.9167 - val_loss: 0.5220 - val_accuracy: 0.8722 Epoch 20/30 6/6 [==============================] - 4s 684ms/step - loss: 0.4183 - accuracy: 0.9167 - val_loss: 0.5213 - val_accuracy: 0.8667 Epoch 21/30 6/6 [==============================] - 5s 752ms/step - loss: 0.4238 - accuracy: 0.9028 - val_loss: 0.5070 - val_accuracy: 0.8778 Epoch 22/30 6/6 [==============================] - 4s 682ms/step - loss: 0.4042 - accuracy: 0.9083 - val_loss: 0.5126 - val_accuracy: 0.8667 Epoch 23/30 6/6 [==============================] - 5s 900ms/step - loss: 0.3840 - accuracy: 0.9208 - val_loss: 0.4920 - val_accuracy: 0.8667 Epoch 24/30 6/6 [==============================] - 5s 738ms/step - loss: 0.3806 - accuracy: 0.9208 - val_loss: 0.5006 - val_accuracy: 0.8722 Epoch 25/30 6/6 [==============================] - 5s 783ms/step - loss: 0.3646 - accuracy: 0.9319 - val_loss: 0.4805 - val_accuracy: 0.8833 Epoch 26/30 6/6 [==============================] - 4s 698ms/step - loss: 0.3706 - accuracy: 0.9264 - val_loss: 0.4952 - val_accuracy: 0.8778 Epoch 27/30 6/6 [==============================] - 6s 974ms/step - loss: 0.3680 - accuracy: 0.9153 - val_loss: 0.4700 - val_accuracy: 0.8722 Epoch 28/30 6/6 [==============================] - 5s 765ms/step - loss: 0.3511 - accuracy: 0.9361 - val_loss: 0.4685 - val_accuracy: 0.8778 Epoch 29/30 6/6 [==============================] - 4s 700ms/step - loss: 0.3420 - accuracy: 0.9292 - val_loss: 0.4687 - val_accuracy: 0.8778 Epoch 30/30 6/6 [==============================] - 5s 898ms/step - loss: 0.3615 - accuracy: 0.9236 - val_loss: 0.4581 - val_accuracy: 0.8778 8/8 [==============================] - 1s 61ms/step Epoch 1/30 6/6 [==============================] - 6s 803ms/step - loss: 5.9895 - accuracy: 0.4111 - val_loss: 5.2994 - val_accuracy: 0.5778 Epoch 2/30 6/6 [==============================] - 5s 800ms/step - loss: 4.8522 - accuracy: 0.5931 - val_loss: 4.3504 - val_accuracy: 0.6389 Epoch 3/30 6/6 [==============================] - 4s 746ms/step - loss: 3.9545 - accuracy: 0.7000 - val_loss: 3.5787 - val_accuracy: 0.6944 Epoch 4/30 6/6 [==============================] - 6s 963ms/step - loss: 3.2458 - accuracy: 0.7500 - val_loss: 2.9391 - val_accuracy: 0.7333 Epoch 5/30 6/6 [==============================] - 5s 750ms/step - loss: 2.6911 - accuracy: 0.7681 - val_loss: 2.4566 - val_accuracy: 0.7389 Epoch 6/30 6/6 [==============================] - 5s 789ms/step - loss: 2.2407 - accuracy: 0.7986 - val_loss: 2.0467 - val_accuracy: 0.7833 Epoch 7/30 6/6 [==============================] - 5s 898ms/step - loss: 1.8711 - accuracy: 0.8014 - val_loss: 1.7705 - val_accuracy: 0.7778 Epoch 8/30 6/6 [==============================] - 5s 815ms/step - loss: 1.5710 - accuracy: 0.8361 - val_loss: 1.5111 - val_accuracy: 0.8056 Epoch 9/30 6/6 [==============================] - 4s 769ms/step - loss: 1.3601 - accuracy: 0.8431 - val_loss: 1.3374 - val_accuracy: 0.8056 Epoch 10/30 6/6 [==============================] - 5s 770ms/step - loss: 1.1991 - accuracy: 0.8403 - val_loss: 1.1793 - val_accuracy: 0.8167 Epoch 11/30 6/6 [==============================] - 5s 814ms/step - loss: 1.0809 - accuracy: 0.8417 - val_loss: 1.0727 - val_accuracy: 0.8222 Epoch 12/30 6/6 [==============================] - 5s 934ms/step - loss: 0.9611 - accuracy: 0.8556 - val_loss: 0.9914 - val_accuracy: 0.8222 Epoch 13/30 6/6 [==============================] - 4s 677ms/step - loss: 0.8942 - accuracy: 0.8667 - val_loss: 0.9290 - val_accuracy: 0.8333 Epoch 14/30 6/6 [==============================] - 5s 754ms/step - loss: 0.8355 - accuracy: 0.8653 - val_loss: 0.8734 - val_accuracy: 0.8222 Epoch 15/30 6/6 [==============================] - 5s 710ms/step - loss: 0.7896 - accuracy: 0.8611 - val_loss: 0.8436 - val_accuracy: 0.8167 Epoch 16/30 6/6 [==============================] - 5s 752ms/step - loss: 0.7414 - accuracy: 0.8597 - val_loss: 0.7830 - val_accuracy: 0.8389 Epoch 17/30 6/6 [==============================] - 5s 886ms/step - loss: 0.7155 - accuracy: 0.8736 - val_loss: 0.7529 - val_accuracy: 0.8500 Epoch 18/30 6/6 [==============================] - 4s 705ms/step - loss: 0.6684 - accuracy: 0.8972 - val_loss: 0.7387 - val_accuracy: 0.8444 Epoch 19/30 6/6 [==============================] - 5s 772ms/step - loss: 0.6329 - accuracy: 0.9000 - val_loss: 0.7030 - val_accuracy: 0.8556 Epoch 20/30 6/6 [==============================] - 4s 714ms/step - loss: 0.6218 - accuracy: 0.8889 - val_loss: 0.6880 - val_accuracy: 0.8500 Epoch 21/30 6/6 [==============================] - 5s 884ms/step - loss: 0.6179 - accuracy: 0.8708 - val_loss: 0.6929 - val_accuracy: 0.8500 Epoch 22/30 6/6 [==============================] - 5s 733ms/step - loss: 0.5890 - accuracy: 0.8958 - val_loss: 0.6573 - val_accuracy: 0.8556 Epoch 23/30 6/6 [==============================] - 5s 677ms/step - loss: 0.5912 - accuracy: 0.8750 - val_loss: 0.6641 - val_accuracy: 0.8556 Epoch 24/30 6/6 [==============================] - 4s 683ms/step - loss: 0.5753 - accuracy: 0.8889 - val_loss: 0.6388 - val_accuracy: 0.8444 Epoch 25/30 6/6 [==============================] - 5s 926ms/step - loss: 0.5686 - accuracy: 0.8847 - val_loss: 0.6292 - val_accuracy: 0.8556 Epoch 26/30 6/6 [==============================] - 5s 743ms/step - loss: 0.5496 - accuracy: 0.8903 - val_loss: 0.6280 - val_accuracy: 0.8556 Epoch 27/30 6/6 [==============================] - 5s 754ms/step - loss: 0.5485 - accuracy: 0.8861 - val_loss: 0.6073 - val_accuracy: 0.8500 Epoch 28/30 6/6 [==============================] - 4s 699ms/step - loss: 0.5343 - accuracy: 0.8861 - val_loss: 0.6387 - val_accuracy: 0.8556 Epoch 29/30 6/6 [==============================] - 5s 824ms/step - loss: 0.5285 - accuracy: 0.8806 - val_loss: 0.5909 - val_accuracy: 0.8722 Epoch 30/30 6/6 [==============================] - 4s 695ms/step - loss: 0.5076 - accuracy: 0.9097 - val_loss: 0.6004 - val_accuracy: 0.8611 8/8 [==============================] - 1s 61ms/step Epoch 1/30 6/6 [==============================] - 6s 807ms/step - loss: 48.2372 - accuracy: 0.3125 - val_loss: 41.6457 - val_accuracy: 0.4833 Epoch 2/30 6/6 [==============================] - 4s 691ms/step - loss: 37.5842 - accuracy: 0.4597 - val_loss: 32.3970 - val_accuracy: 0.5444 Epoch 3/30 6/6 [==============================] - 5s 740ms/step - loss: 29.2860 - accuracy: 0.5167 - val_loss: 24.9232 - val_accuracy: 0.5722 Epoch 4/30 6/6 [==============================] - 6s 932ms/step - loss: 22.3241 - accuracy: 0.6181 - val_loss: 18.9507 - val_accuracy: 0.5944 Epoch 5/30 6/6 [==============================] - 5s 800ms/step - loss: 16.9195 - accuracy: 0.6486 - val_loss: 14.2737 - val_accuracy: 0.6444 Epoch 6/30 6/6 [==============================] - 5s 770ms/step - loss: 12.7276 - accuracy: 0.6972 - val_loss: 10.6818 - val_accuracy: 0.6667 Epoch 7/30 6/6 [==============================] - 4s 693ms/step - loss: 9.5008 - accuracy: 0.7111 - val_loss: 7.9635 - val_accuracy: 0.6833 Epoch 8/30 6/6 [==============================] - 5s 918ms/step - loss: 7.0680 - accuracy: 0.7389 - val_loss: 5.9395 - val_accuracy: 0.7167 Epoch 9/30 6/6 [==============================] - 5s 757ms/step - loss: 5.2665 - accuracy: 0.7194 - val_loss: 4.4600 - val_accuracy: 0.7222 Epoch 10/30 6/6 [==============================] - 5s 758ms/step - loss: 3.9199 - accuracy: 0.7597 - val_loss: 3.3756 - val_accuracy: 0.7333 Epoch 11/30 6/6 [==============================] - 6s 949ms/step - loss: 2.9973 - accuracy: 0.8014 - val_loss: 2.6052 - val_accuracy: 0.7389 Epoch 12/30 6/6 [==============================] - 5s 838ms/step - loss: 2.3341 - accuracy: 0.7708 - val_loss: 2.0636 - val_accuracy: 0.7333 Epoch 13/30 6/6 [==============================] - 4s 700ms/step - loss: 1.8618 - accuracy: 0.7847 - val_loss: 1.6922 - val_accuracy: 0.7556 Epoch 14/30 6/6 [==============================] - 5s 818ms/step - loss: 1.5239 - accuracy: 0.7806 - val_loss: 1.4128 - val_accuracy: 0.7889 Epoch 15/30 6/6 [==============================] - 5s 718ms/step - loss: 1.3118 - accuracy: 0.7972 - val_loss: 1.2522 - val_accuracy: 0.7556 Epoch 16/30 6/6 [==============================] - 4s 684ms/step - loss: 1.1342 - accuracy: 0.7972 - val_loss: 1.1152 - val_accuracy: 0.7667 Epoch 17/30 6/6 [==============================] - 5s 912ms/step - loss: 1.0431 - accuracy: 0.8139 - val_loss: 1.0399 - val_accuracy: 0.7833 Epoch 18/30 6/6 [==============================] - 4s 713ms/step - loss: 0.9638 - accuracy: 0.8236 - val_loss: 0.9816 - val_accuracy: 0.7667 Epoch 19/30 6/6 [==============================] - 4s 693ms/step - loss: 0.9323 - accuracy: 0.7847 - val_loss: 0.9376 - val_accuracy: 0.7833 Epoch 20/30 6/6 [==============================] - 5s 688ms/step - loss: 0.8924 - accuracy: 0.8125 - val_loss: 0.9260 - val_accuracy: 0.7667 Epoch 21/30 6/6 [==============================] - 4s 707ms/step - loss: 0.8662 - accuracy: 0.8069 - val_loss: 0.8909 - val_accuracy: 0.8000 Epoch 22/30 6/6 [==============================] - 5s 910ms/step - loss: 0.8377 - accuracy: 0.8208 - val_loss: 0.8865 - val_accuracy: 0.7833 Epoch 23/30 6/6 [==============================] - 5s 801ms/step - loss: 0.8288 - accuracy: 0.8306 - val_loss: 0.8681 - val_accuracy: 0.7889 Epoch 24/30 6/6 [==============================] - 5s 853ms/step - loss: 0.7980 - accuracy: 0.8278 - val_loss: 0.8531 - val_accuracy: 0.7944 Epoch 25/30 6/6 [==============================] - 5s 807ms/step - loss: 0.7947 - accuracy: 0.8208 - val_loss: 0.8575 - val_accuracy: 0.7889 Epoch 26/30 6/6 [==============================] - 5s 775ms/step - loss: 0.7908 - accuracy: 0.8306 - val_loss: 0.8337 - val_accuracy: 0.8111 Epoch 27/30 6/6 [==============================] - 5s 805ms/step - loss: 0.7649 - accuracy: 0.8417 - val_loss: 0.8326 - val_accuracy: 0.7778 Epoch 28/30 6/6 [==============================] - 5s 926ms/step - loss: 0.7746 - accuracy: 0.8250 - val_loss: 0.8359 - val_accuracy: 0.7944 Epoch 29/30 6/6 [==============================] - 4s 705ms/step - loss: 0.7751 - accuracy: 0.8403 - val_loss: 0.8501 - val_accuracy: 0.7556 Epoch 30/30 6/6 [==============================] - 5s 771ms/step - loss: 0.7689 - accuracy: 0.8264 - val_loss: 0.8141 - val_accuracy: 0.8056 8/8 [==============================] - 1s 61ms/step Epoch 1/30 6/6 [==============================] - 6s 789ms/step - loss: 1.9185 - accuracy: 0.3222 - val_loss: 1.6255 - val_accuracy: 0.4611 Epoch 2/30 6/6 [==============================] - 5s 816ms/step - loss: 1.5323 - accuracy: 0.5042 - val_loss: 1.3486 - val_accuracy: 0.7000 Epoch 3/30 6/6 [==============================] - 5s 697ms/step - loss: 1.2694 - accuracy: 0.6792 - val_loss: 1.1875 - val_accuracy: 0.6722 Epoch 4/30 6/6 [==============================] - 4s 696ms/step - loss: 1.1105 - accuracy: 0.7153 - val_loss: 1.0535 - val_accuracy: 0.7278 Epoch 5/30 6/6 [==============================] - 6s 1s/step - loss: 0.9465 - accuracy: 0.7708 - val_loss: 0.9607 - val_accuracy: 0.7667 Epoch 6/30 6/6 [==============================] - 4s 686ms/step - loss: 0.8781 - accuracy: 0.7889 - val_loss: 0.8770 - val_accuracy: 0.7611 Epoch 7/30 6/6 [==============================] - 5s 820ms/step - loss: 0.7807 - accuracy: 0.8139 - val_loss: 0.8104 - val_accuracy: 0.7833 Epoch 8/30 6/6 [==============================] - 5s 742ms/step - loss: 0.7283 - accuracy: 0.8278 - val_loss: 0.7702 - val_accuracy: 0.8111 Epoch 9/30 6/6 [==============================] - 4s 699ms/step - loss: 0.6948 - accuracy: 0.8444 - val_loss: 0.7299 - val_accuracy: 0.7833 Epoch 10/30 6/6 [==============================] - 6s 969ms/step - loss: 0.6327 - accuracy: 0.8681 - val_loss: 0.7015 - val_accuracy: 0.8167 Epoch 11/30 6/6 [==============================] - 4s 711ms/step - loss: 0.6149 - accuracy: 0.8431 - val_loss: 0.6632 - val_accuracy: 0.8222 Epoch 12/30 6/6 [==============================] - 5s 791ms/step - loss: 0.5795 - accuracy: 0.8792 - val_loss: 0.6416 - val_accuracy: 0.8222 Epoch 13/30 6/6 [==============================] - 5s 794ms/step - loss: 0.5709 - accuracy: 0.8639 - val_loss: 0.6271 - val_accuracy: 0.8222 Epoch 14/30 6/6 [==============================] - 4s 715ms/step - loss: 0.5475 - accuracy: 0.8694 - val_loss: 0.6029 - val_accuracy: 0.8278 Epoch 15/30 6/6 [==============================] - 6s 1s/step - loss: 0.5212 - accuracy: 0.8819 - val_loss: 0.5962 - val_accuracy: 0.8444 Epoch 16/30 6/6 [==============================] - 4s 702ms/step - loss: 0.5050 - accuracy: 0.8903 - val_loss: 0.5852 - val_accuracy: 0.8333 Epoch 17/30 6/6 [==============================] - 5s 808ms/step - loss: 0.4918 - accuracy: 0.8778 - val_loss: 0.5662 - val_accuracy: 0.8556 Epoch 18/30 6/6 [==============================] - 5s 697ms/step - loss: 0.4798 - accuracy: 0.8931 - val_loss: 0.5775 - val_accuracy: 0.8389 Epoch 19/30 6/6 [==============================] - 4s 717ms/step - loss: 0.4716 - accuracy: 0.8847 - val_loss: 0.5386 - val_accuracy: 0.8556 Epoch 20/30 6/6 [==============================] - 6s 982ms/step - loss: 0.4517 - accuracy: 0.9083 - val_loss: 0.5524 - val_accuracy: 0.8722 Epoch 21/30 6/6 [==============================] - 4s 702ms/step - loss: 0.4357 - accuracy: 0.9056 - val_loss: 0.5251 - val_accuracy: 0.8778 Epoch 22/30 6/6 [==============================] - 4s 730ms/step - loss: 0.4331 - accuracy: 0.9056 - val_loss: 0.5246 - val_accuracy: 0.8722 Epoch 23/30 6/6 [==============================] - 5s 827ms/step - loss: 0.4129 - accuracy: 0.8986 - val_loss: 0.5107 - val_accuracy: 0.8611 Epoch 24/30 6/6 [==============================] - 4s 736ms/step - loss: 0.4107 - accuracy: 0.8958 - val_loss: 0.5044 - val_accuracy: 0.8667 Epoch 25/30 6/6 [==============================] - 6s 953ms/step - loss: 0.3979 - accuracy: 0.9139 - val_loss: 0.4962 - val_accuracy: 0.8667 Epoch 26/30 6/6 [==============================] - 4s 752ms/step - loss: 0.3735 - accuracy: 0.9236 - val_loss: 0.4899 - val_accuracy: 0.8778 Epoch 27/30 6/6 [==============================] - 5s 762ms/step - loss: 0.3889 - accuracy: 0.9083 - val_loss: 0.4812 - val_accuracy: 0.8778 Epoch 28/30 6/6 [==============================] - 5s 775ms/step - loss: 0.3843 - accuracy: 0.9139 - val_loss: 0.4817 - val_accuracy: 0.8778 Epoch 29/30 6/6 [==============================] - 4s 696ms/step - loss: 0.3626 - accuracy: 0.9250 - val_loss: 0.4821 - val_accuracy: 0.8833 Epoch 30/30 6/6 [==============================] - 5s 877ms/step - loss: 0.3779 - accuracy: 0.9111 - val_loss: 0.4733 - val_accuracy: 0.8778 8/8 [==============================] - 1s 61ms/step Epoch 1/30 6/6 [==============================] - 6s 750ms/step - loss: 6.2706 - accuracy: 0.2694 - val_loss: 5.4098 - val_accuracy: 0.4833 Epoch 2/30 6/6 [==============================] - 5s 890ms/step - loss: 5.0000 - accuracy: 0.5194 - val_loss: 4.4183 - val_accuracy: 0.7222 Epoch 3/30 6/6 [==============================] - 4s 705ms/step - loss: 4.1052 - accuracy: 0.6444 - val_loss: 3.6742 - val_accuracy: 0.6333 Epoch 4/30 6/6 [==============================] - 6s 953ms/step - loss: 3.3682 - accuracy: 0.6903 - val_loss: 3.0222 - val_accuracy: 0.7278 Epoch 5/30 6/6 [==============================] - 5s 951ms/step - loss: 2.7852 - accuracy: 0.7583 - val_loss: 2.5297 - val_accuracy: 0.7444 Epoch 6/30 6/6 [==============================] - 5s 818ms/step - loss: 2.3227 - accuracy: 0.7556 - val_loss: 2.1410 - val_accuracy: 0.7444 Epoch 7/30 6/6 [==============================] - 4s 736ms/step - loss: 1.9521 - accuracy: 0.8111 - val_loss: 1.8396 - val_accuracy: 0.7778 Epoch 8/30 6/6 [==============================] - 5s 770ms/step - loss: 1.6818 - accuracy: 0.8236 - val_loss: 1.5836 - val_accuracy: 0.7889 Epoch 9/30 6/6 [==============================] - 5s 821ms/step - loss: 1.4517 - accuracy: 0.8292 - val_loss: 1.3967 - val_accuracy: 0.8222 Epoch 10/30 6/6 [==============================] - 5s 951ms/step - loss: 1.2962 - accuracy: 0.8306 - val_loss: 1.2517 - val_accuracy: 0.8222 Epoch 11/30 6/6 [==============================] - 5s 761ms/step - loss: 1.1634 - accuracy: 0.8167 - val_loss: 1.1433 - val_accuracy: 0.8111 Epoch 12/30 6/6 [==============================] - 6s 1s/step - loss: 1.0511 - accuracy: 0.8417 - val_loss: 1.0490 - val_accuracy: 0.8222 Epoch 13/30 6/6 [==============================] - 5s 772ms/step - loss: 0.9540 - accuracy: 0.8500 - val_loss: 0.9753 - val_accuracy: 0.8333 Epoch 14/30 6/6 [==============================] - 4s 689ms/step - loss: 0.8983 - accuracy: 0.8528 - val_loss: 0.9123 - val_accuracy: 0.8333 Epoch 15/30 6/6 [==============================] - 4s 718ms/step - loss: 0.8481 - accuracy: 0.8528 - val_loss: 0.8810 - val_accuracy: 0.8222 Epoch 16/30 6/6 [==============================] - 5s 918ms/step - loss: 0.8086 - accuracy: 0.8528 - val_loss: 0.8254 - val_accuracy: 0.8444 Epoch 17/30 6/6 [==============================] - 5s 730ms/step - loss: 0.7560 - accuracy: 0.8694 - val_loss: 0.8148 - val_accuracy: 0.8389 Epoch 18/30 6/6 [==============================] - 5s 691ms/step - loss: 0.7319 - accuracy: 0.8597 - val_loss: 0.7664 - val_accuracy: 0.8444 Epoch 19/30 6/6 [==============================] - 5s 756ms/step - loss: 0.6876 - accuracy: 0.8750 - val_loss: 0.7573 - val_accuracy: 0.8389 Epoch 20/30 6/6 [==============================] - 5s 930ms/step - loss: 0.6999 - accuracy: 0.8583 - val_loss: 0.7302 - val_accuracy: 0.8556 Epoch 21/30 6/6 [==============================] - 4s 725ms/step - loss: 0.6508 - accuracy: 0.9000 - val_loss: 0.7267 - val_accuracy: 0.8389 Epoch 22/30 6/6 [==============================] - 5s 763ms/step - loss: 0.6360 - accuracy: 0.8819 - val_loss: 0.6923 - val_accuracy: 0.8556 Epoch 23/30 6/6 [==============================] - 4s 736ms/step - loss: 0.6273 - accuracy: 0.8875 - val_loss: 0.7113 - val_accuracy: 0.8333 Epoch 24/30 6/6 [==============================] - 6s 946ms/step - loss: 0.6292 - accuracy: 0.8847 - val_loss: 0.6655 - val_accuracy: 0.8500 Epoch 25/30 6/6 [==============================] - 5s 760ms/step - loss: 0.6082 - accuracy: 0.8847 - val_loss: 0.6953 - val_accuracy: 0.8444 Epoch 26/30 6/6 [==============================] - 4s 695ms/step - loss: 0.6077 - accuracy: 0.8806 - val_loss: 0.6465 - val_accuracy: 0.8667 Epoch 27/30 6/6 [==============================] - 6s 900ms/step - loss: 0.5713 - accuracy: 0.8819 - val_loss: 0.6483 - val_accuracy: 0.8556 Epoch 28/30 6/6 [==============================] - 4s 754ms/step - loss: 0.5807 - accuracy: 0.8806 - val_loss: 0.6286 - val_accuracy: 0.8667 Epoch 29/30 6/6 [==============================] - 5s 809ms/step - loss: 0.5657 - accuracy: 0.8861 - val_loss: 0.6176 - val_accuracy: 0.8667 Epoch 30/30 6/6 [==============================] - 5s 738ms/step - loss: 0.5363 - accuracy: 0.8958 - val_loss: 0.6299 - val_accuracy: 0.8500 8/8 [==============================] - 1s 60ms/step Epoch 1/30 6/6 [==============================] - 6s 819ms/step - loss: 48.1439 - accuracy: 0.3056 - val_loss: 41.4969 - val_accuracy: 0.4778 Epoch 2/30 6/6 [==============================] - 5s 759ms/step - loss: 37.5850 - accuracy: 0.4264 - val_loss: 32.2978 - val_accuracy: 0.5611 Epoch 3/30 6/6 [==============================] - 6s 954ms/step - loss: 29.2065 - accuracy: 0.5097 - val_loss: 24.8331 - val_accuracy: 0.5944 Epoch 4/30 6/6 [==============================] - 5s 741ms/step - loss: 22.2822 - accuracy: 0.5597 - val_loss: 18.8882 - val_accuracy: 0.6000 Epoch 5/30 6/6 [==============================] - 5s 792ms/step - loss: 16.9009 - accuracy: 0.5847 - val_loss: 14.2300 - val_accuracy: 0.6611 Epoch 6/30 6/6 [==============================] - 5s 765ms/step - loss: 12.5930 - accuracy: 0.6722 - val_loss: 10.6587 - val_accuracy: 0.6889 Epoch 7/30 6/6 [==============================] - 5s 757ms/step - loss: 9.5507 - accuracy: 0.6403 - val_loss: 7.9637 - val_accuracy: 0.6722 Epoch 8/30 6/6 [==============================] - 5s 920ms/step - loss: 7.0121 - accuracy: 0.7181 - val_loss: 5.9408 - val_accuracy: 0.7667 Epoch 9/30 6/6 [==============================] - 4s 702ms/step - loss: 5.2905 - accuracy: 0.7236 - val_loss: 4.4823 - val_accuracy: 0.6889 Epoch 10/30 6/6 [==============================] - 5s 812ms/step - loss: 3.9809 - accuracy: 0.7306 - val_loss: 3.3939 - val_accuracy: 0.7333 Epoch 11/30 6/6 [==============================] - 6s 947ms/step - loss: 3.0283 - accuracy: 0.7681 - val_loss: 2.6385 - val_accuracy: 0.7111 Epoch 12/30 6/6 [==============================] - 4s 714ms/step - loss: 2.3484 - accuracy: 0.7764 - val_loss: 2.0840 - val_accuracy: 0.7667 Epoch 13/30 6/6 [==============================] - 5s 745ms/step - loss: 1.8740 - accuracy: 0.7889 - val_loss: 1.7062 - val_accuracy: 0.7500 Epoch 14/30 6/6 [==============================] - 6s 1s/step - loss: 1.5516 - accuracy: 0.7750 - val_loss: 1.4471 - val_accuracy: 0.7556 Epoch 15/30 6/6 [==============================] - 5s 800ms/step - loss: 1.3245 - accuracy: 0.7806 - val_loss: 1.2601 - val_accuracy: 0.7722 Epoch 16/30 6/6 [==============================] - 5s 697ms/step - loss: 1.1656 - accuracy: 0.7847 - val_loss: 1.1498 - val_accuracy: 0.7778 Epoch 17/30 6/6 [==============================] - 5s 754ms/step - loss: 1.0849 - accuracy: 0.7972 - val_loss: 1.0776 - val_accuracy: 0.7333 Epoch 18/30 6/6 [==============================] - 6s 985ms/step - loss: 1.0127 - accuracy: 0.7806 - val_loss: 0.9996 - val_accuracy: 0.8000 Epoch 19/30 6/6 [==============================] - 5s 801ms/step - loss: 0.9623 - accuracy: 0.7847 - val_loss: 0.9842 - val_accuracy: 0.7111 Epoch 20/30 6/6 [==============================] - 5s 746ms/step - loss: 0.9224 - accuracy: 0.8069 - val_loss: 0.9290 - val_accuracy: 0.8111 Epoch 21/30 6/6 [==============================] - 5s 761ms/step - loss: 0.8914 - accuracy: 0.8222 - val_loss: 0.9174 - val_accuracy: 0.7833 Epoch 22/30 6/6 [==============================] - 6s 950ms/step - loss: 0.8448 - accuracy: 0.8347 - val_loss: 0.8927 - val_accuracy: 0.8167 Epoch 23/30 6/6 [==============================] - 5s 773ms/step - loss: 0.8505 - accuracy: 0.8056 - val_loss: 0.8865 - val_accuracy: 0.7944 Epoch 24/30 6/6 [==============================] - 5s 736ms/step - loss: 0.8372 - accuracy: 0.8194 - val_loss: 0.9052 - val_accuracy: 0.7444 Epoch 25/30 6/6 [==============================] - 5s 763ms/step - loss: 0.8275 - accuracy: 0.7986 - val_loss: 0.8635 - val_accuracy: 0.7889 Epoch 26/30 6/6 [==============================] - 6s 1s/step - loss: 0.8301 - accuracy: 0.8208 - val_loss: 0.8720 - val_accuracy: 0.7667 Epoch 27/30 6/6 [==============================] - 5s 773ms/step - loss: 0.8180 - accuracy: 0.8181 - val_loss: 0.8451 - val_accuracy: 0.8222 Epoch 28/30 6/6 [==============================] - 5s 690ms/step - loss: 0.8020 - accuracy: 0.8264 - val_loss: 0.8471 - val_accuracy: 0.7778 Epoch 29/30 6/6 [==============================] - 4s 687ms/step - loss: 0.8055 - accuracy: 0.8167 - val_loss: 0.8340 - val_accuracy: 0.8056 Epoch 30/30 6/6 [==============================] - 5s 891ms/step - loss: 0.8066 - accuracy: 0.8097 - val_loss: 0.8534 - val_accuracy: 0.7778 8/8 [==============================] - 1s 70ms/step Epoch 1/30 6/6 [==============================] - 7s 920ms/step - loss: 2.0247 - accuracy: 0.2958 - val_loss: 1.6450 - val_accuracy: 0.3889 Epoch 2/30 6/6 [==============================] - 5s 781ms/step - loss: 1.5994 - accuracy: 0.4958 - val_loss: 1.3631 - val_accuracy: 0.7111 Epoch 3/30 6/6 [==============================] - 5s 806ms/step - loss: 1.3661 - accuracy: 0.6111 - val_loss: 1.2034 - val_accuracy: 0.6889 Epoch 4/30 6/6 [==============================] - 5s 782ms/step - loss: 1.1538 - accuracy: 0.6931 - val_loss: 1.0805 - val_accuracy: 0.7111 Epoch 5/30 6/6 [==============================] - 5s 954ms/step - loss: 1.0129 - accuracy: 0.7597 - val_loss: 0.9806 - val_accuracy: 0.7611 Epoch 6/30 6/6 [==============================] - 4s 691ms/step - loss: 0.9260 - accuracy: 0.7778 - val_loss: 0.9110 - val_accuracy: 0.7611 Epoch 7/30 6/6 [==============================] - 5s 852ms/step - loss: 0.8574 - accuracy: 0.7903 - val_loss: 0.8554 - val_accuracy: 0.7722 Epoch 8/30 6/6 [==============================] - 5s 919ms/step - loss: 0.7887 - accuracy: 0.8264 - val_loss: 0.7978 - val_accuracy: 0.8167 Epoch 9/30 6/6 [==============================] - 5s 764ms/step - loss: 0.7688 - accuracy: 0.8056 - val_loss: 0.7658 - val_accuracy: 0.8111 Epoch 10/30 6/6 [==============================] - 4s 712ms/step - loss: 0.7143 - accuracy: 0.8292 - val_loss: 0.7277 - val_accuracy: 0.8000 Epoch 11/30 6/6 [==============================] - 6s 962ms/step - loss: 0.6945 - accuracy: 0.8319 - val_loss: 0.7013 - val_accuracy: 0.8222 Epoch 12/30 6/6 [==============================] - 4s 697ms/step - loss: 0.6549 - accuracy: 0.8486 - val_loss: 0.6788 - val_accuracy: 0.8222 Epoch 13/30 6/6 [==============================] - 5s 771ms/step - loss: 0.6113 - accuracy: 0.8639 - val_loss: 0.6623 - val_accuracy: 0.8278 Epoch 14/30 6/6 [==============================] - 5s 860ms/step - loss: 0.6057 - accuracy: 0.8556 - val_loss: 0.6425 - val_accuracy: 0.8278 Epoch 15/30 6/6 [==============================] - 5s 766ms/step - loss: 0.5832 - accuracy: 0.8708 - val_loss: 0.6303 - val_accuracy: 0.8444 Epoch 16/30 6/6 [==============================] - 5s 903ms/step - loss: 0.5538 - accuracy: 0.8736 - val_loss: 0.6086 - val_accuracy: 0.8333 Epoch 17/30 6/6 [==============================] - 5s 754ms/step - loss: 0.5533 - accuracy: 0.8819 - val_loss: 0.5982 - val_accuracy: 0.8333 Epoch 18/30 6/6 [==============================] - 5s 782ms/step - loss: 0.5409 - accuracy: 0.8750 - val_loss: 0.5862 - val_accuracy: 0.8389 Epoch 19/30 6/6 [==============================] - 5s 973ms/step - loss: 0.5318 - accuracy: 0.8667 - val_loss: 0.5805 - val_accuracy: 0.8444 Epoch 20/30 6/6 [==============================] - 5s 766ms/step - loss: 0.4881 - accuracy: 0.9028 - val_loss: 0.5694 - val_accuracy: 0.8389 Epoch 21/30 6/6 [==============================] - 5s 826ms/step - loss: 0.4953 - accuracy: 0.8833 - val_loss: 0.5621 - val_accuracy: 0.8556 Epoch 22/30 6/6 [==============================] - 5s 760ms/step - loss: 0.4908 - accuracy: 0.8847 - val_loss: 0.5482 - val_accuracy: 0.8444 Epoch 23/30 6/6 [==============================] - 5s 833ms/step - loss: 0.4854 - accuracy: 0.8792 - val_loss: 0.5422 - val_accuracy: 0.8611 Epoch 24/30 6/6 [==============================] - 4s 702ms/step - loss: 0.4798 - accuracy: 0.8806 - val_loss: 0.5327 - val_accuracy: 0.8611 Epoch 25/30 6/6 [==============================] - 4s 767ms/step - loss: 0.4741 - accuracy: 0.8917 - val_loss: 0.5283 - val_accuracy: 0.8556 Epoch 26/30 6/6 [==============================] - 5s 891ms/step - loss: 0.4538 - accuracy: 0.8917 - val_loss: 0.5250 - val_accuracy: 0.8722 Epoch 27/30 6/6 [==============================] - 5s 881ms/step - loss: 0.4312 - accuracy: 0.9042 - val_loss: 0.5178 - val_accuracy: 0.8500 Epoch 28/30 6/6 [==============================] - 5s 698ms/step - loss: 0.4565 - accuracy: 0.8889 - val_loss: 0.5264 - val_accuracy: 0.8722 Epoch 29/30 6/6 [==============================] - 5s 770ms/step - loss: 0.4455 - accuracy: 0.9028 - val_loss: 0.5053 - val_accuracy: 0.8667 Epoch 30/30 6/6 [==============================] - 5s 903ms/step - loss: 0.4348 - accuracy: 0.9111 - val_loss: 0.5016 - val_accuracy: 0.8722 8/8 [==============================] - 1s 61ms/step Epoch 1/30 6/6 [==============================] - 6s 727ms/step - loss: 6.1820 - accuracy: 0.3278 - val_loss: 5.4072 - val_accuracy: 0.3889 Epoch 2/30 6/6 [==============================] - 5s 879ms/step - loss: 5.0916 - accuracy: 0.4833 - val_loss: 4.4368 - val_accuracy: 0.6444 Epoch 3/30 6/6 [==============================] - 5s 796ms/step - loss: 4.1462 - accuracy: 0.6014 - val_loss: 3.6786 - val_accuracy: 0.6500 Epoch 4/30 6/6 [==============================] - 5s 786ms/step - loss: 3.4262 - accuracy: 0.6528 - val_loss: 3.0562 - val_accuracy: 0.7444 Epoch 5/30 6/6 [==============================] - 4s 705ms/step - loss: 2.8508 - accuracy: 0.7167 - val_loss: 2.5895 - val_accuracy: 0.7056 Epoch 6/30 6/6 [==============================] - 5s 905ms/step - loss: 2.3941 - accuracy: 0.7444 - val_loss: 2.1738 - val_accuracy: 0.7611 Epoch 7/30 6/6 [==============================] - 4s 699ms/step - loss: 2.0125 - accuracy: 0.7736 - val_loss: 1.8835 - val_accuracy: 0.7444 Epoch 8/30 6/6 [==============================] - 4s 701ms/step - loss: 1.7736 - accuracy: 0.7764 - val_loss: 1.6258 - val_accuracy: 0.7833 Epoch 9/30 6/6 [==============================] - 5s 805ms/step - loss: 1.5333 - accuracy: 0.8069 - val_loss: 1.4402 - val_accuracy: 0.7778 Epoch 10/30 6/6 [==============================] - 5s 910ms/step - loss: 1.3327 - accuracy: 0.8250 - val_loss: 1.2928 - val_accuracy: 0.7889 Epoch 11/30 6/6 [==============================] - 5s 731ms/step - loss: 1.2123 - accuracy: 0.8083 - val_loss: 1.1827 - val_accuracy: 0.7889 Epoch 12/30 6/6 [==============================] - 5s 731ms/step - loss: 1.1132 - accuracy: 0.8181 - val_loss: 1.0829 - val_accuracy: 0.8167 Epoch 13/30 6/6 [==============================] - 5s 740ms/step - loss: 1.0305 - accuracy: 0.8236 - val_loss: 1.0166 - val_accuracy: 0.8222 Epoch 14/30 6/6 [==============================] - 5s 923ms/step - loss: 0.9332 - accuracy: 0.8361 - val_loss: 0.9584 - val_accuracy: 0.8222 Epoch 15/30 6/6 [==============================] - 4s 699ms/step - loss: 0.9037 - accuracy: 0.8444 - val_loss: 0.9171 - val_accuracy: 0.8167 Epoch 16/30 6/6 [==============================] - 5s 889ms/step - loss: 0.8435 - accuracy: 0.8403 - val_loss: 0.8655 - val_accuracy: 0.8333 Epoch 17/30 6/6 [==============================] - 6s 942ms/step - loss: 0.8413 - accuracy: 0.8319 - val_loss: 0.8417 - val_accuracy: 0.8333 Epoch 18/30 6/6 [==============================] - 4s 687ms/step - loss: 0.7986 - accuracy: 0.8264 - val_loss: 0.8164 - val_accuracy: 0.8333 Epoch 19/30 6/6 [==============================] - 4s 693ms/step - loss: 0.7610 - accuracy: 0.8667 - val_loss: 0.7869 - val_accuracy: 0.8500 Epoch 20/30 6/6 [==============================] - 5s 920ms/step - loss: 0.7360 - accuracy: 0.8569 - val_loss: 0.7697 - val_accuracy: 0.8278 Epoch 21/30 6/6 [==============================] - 5s 845ms/step - loss: 0.7132 - accuracy: 0.8500 - val_loss: 0.7555 - val_accuracy: 0.8500 Epoch 22/30 6/6 [==============================] - 5s 729ms/step - loss: 0.6931 - accuracy: 0.8681 - val_loss: 0.7422 - val_accuracy: 0.8222 Epoch 23/30 6/6 [==============================] - 4s 732ms/step - loss: 0.6753 - accuracy: 0.8611 - val_loss: 0.7122 - val_accuracy: 0.8444 Epoch 24/30 6/6 [==============================] - 6s 954ms/step - loss: 0.6779 - accuracy: 0.8597 - val_loss: 0.7050 - val_accuracy: 0.8389 Epoch 25/30 6/6 [==============================] - 4s 692ms/step - loss: 0.6538 - accuracy: 0.8736 - val_loss: 0.6905 - val_accuracy: 0.8444 Epoch 26/30 6/6 [==============================] - 5s 780ms/step - loss: 0.6583 - accuracy: 0.8653 - val_loss: 0.6947 - val_accuracy: 0.8333 Epoch 27/30 6/6 [==============================] - 5s 800ms/step - loss: 0.6584 - accuracy: 0.8486 - val_loss: 0.6762 - val_accuracy: 0.8500 Epoch 28/30 6/6 [==============================] - 4s 713ms/step - loss: 0.6146 - accuracy: 0.8778 - val_loss: 0.6670 - val_accuracy: 0.8389 Epoch 29/30 6/6 [==============================] - 5s 885ms/step - loss: 0.5979 - accuracy: 0.8903 - val_loss: 0.6622 - val_accuracy: 0.8500 Epoch 30/30 6/6 [==============================] - 5s 744ms/step - loss: 0.6053 - accuracy: 0.8792 - val_loss: 0.6442 - val_accuracy: 0.8611 8/8 [==============================] - 1s 60ms/step Epoch 1/30 6/6 [==============================] - 7s 927ms/step - loss: 47.5526 - accuracy: 0.2944 - val_loss: 41.4676 - val_accuracy: 0.4333 Epoch 2/30 6/6 [==============================] - 5s 747ms/step - loss: 37.4806 - accuracy: 0.3847 - val_loss: 32.3120 - val_accuracy: 0.5389 Epoch 3/30 6/6 [==============================] - 4s 692ms/step - loss: 29.1420 - accuracy: 0.4639 - val_loss: 24.8801 - val_accuracy: 0.6444 Epoch 4/30 6/6 [==============================] - 5s 948ms/step - loss: 22.1949 - accuracy: 0.4792 - val_loss: 18.9723 - val_accuracy: 0.5944 Epoch 5/30 6/6 [==============================] - 4s 681ms/step - loss: 16.9933 - accuracy: 0.5528 - val_loss: 14.3196 - val_accuracy: 0.6333 Epoch 6/30 6/6 [==============================] - 5s 865ms/step - loss: 12.8271 - accuracy: 0.6292 - val_loss: 10.7402 - val_accuracy: 0.6833 Epoch 7/30 6/6 [==============================] - 5s 753ms/step - loss: 9.6333 - accuracy: 0.6736 - val_loss: 8.0554 - val_accuracy: 0.6333 Epoch 8/30 6/6 [==============================] - 4s 720ms/step - loss: 7.1824 - accuracy: 0.6583 - val_loss: 6.0326 - val_accuracy: 0.7000 Epoch 9/30 6/6 [==============================] - 6s 873ms/step - loss: 5.3754 - accuracy: 0.6958 - val_loss: 4.5601 - val_accuracy: 0.7056 Epoch 10/30 6/6 [==============================] - 5s 870ms/step - loss: 4.0852 - accuracy: 0.7222 - val_loss: 3.4780 - val_accuracy: 0.7222 Epoch 11/30 6/6 [==============================] - 5s 864ms/step - loss: 3.0936 - accuracy: 0.7611 - val_loss: 2.7027 - val_accuracy: 0.7444 Epoch 12/30 6/6 [==============================] - 4s 748ms/step - loss: 2.4366 - accuracy: 0.7292 - val_loss: 2.1511 - val_accuracy: 0.7500 Epoch 13/30 6/6 [==============================] - 6s 960ms/step - loss: 1.9743 - accuracy: 0.7319 - val_loss: 1.7679 - val_accuracy: 0.7444 Epoch 14/30 6/6 [==============================] - 4s 727ms/step - loss: 1.6357 - accuracy: 0.7639 - val_loss: 1.5070 - val_accuracy: 0.7667 Epoch 15/30 6/6 [==============================] - 5s 830ms/step - loss: 1.3949 - accuracy: 0.7708 - val_loss: 1.3189 - val_accuracy: 0.7611 Epoch 16/30 6/6 [==============================] - 5s 701ms/step - loss: 1.2667 - accuracy: 0.7694 - val_loss: 1.1971 - val_accuracy: 0.7611 Epoch 17/30 6/6 [==============================] - 5s 764ms/step - loss: 1.1584 - accuracy: 0.7375 - val_loss: 1.1099 - val_accuracy: 0.7722 Epoch 18/30 6/6 [==============================] - 5s 915ms/step - loss: 1.0697 - accuracy: 0.7750 - val_loss: 1.0533 - val_accuracy: 0.7500 Epoch 19/30 6/6 [==============================] - 4s 688ms/step - loss: 1.0108 - accuracy: 0.7875 - val_loss: 1.0044 - val_accuracy: 0.7667 Epoch 20/30 6/6 [==============================] - 4s 719ms/step - loss: 0.9654 - accuracy: 0.8000 - val_loss: 0.9709 - val_accuracy: 0.7833 Epoch 21/30 6/6 [==============================] - 5s 838ms/step - loss: 0.9462 - accuracy: 0.7736 - val_loss: 0.9640 - val_accuracy: 0.7778 Epoch 22/30 6/6 [==============================] - 5s 894ms/step - loss: 0.9487 - accuracy: 0.7986 - val_loss: 0.9493 - val_accuracy: 0.7611 Epoch 23/30 6/6 [==============================] - 5s 750ms/step - loss: 0.9213 - accuracy: 0.7819 - val_loss: 0.9322 - val_accuracy: 0.7889 Epoch 24/30 6/6 [==============================] - 5s 784ms/step - loss: 0.8951 - accuracy: 0.8042 - val_loss: 0.9128 - val_accuracy: 0.7833 Epoch 25/30 6/6 [==============================] - 5s 802ms/step - loss: 0.9131 - accuracy: 0.7792 - val_loss: 0.9147 - val_accuracy: 0.7778 Epoch 26/30 6/6 [==============================] - 5s 941ms/step - loss: 0.8766 - accuracy: 0.7944 - val_loss: 0.8980 - val_accuracy: 0.8000 Epoch 27/30 6/6 [==============================] - 4s 704ms/step - loss: 0.8693 - accuracy: 0.8083 - val_loss: 0.9001 - val_accuracy: 0.7833 Epoch 28/30 6/6 [==============================] - 6s 961ms/step - loss: 0.8682 - accuracy: 0.8000 - val_loss: 0.8988 - val_accuracy: 0.7778 Epoch 29/30 6/6 [==============================] - 5s 774ms/step - loss: 0.8753 - accuracy: 0.7833 - val_loss: 0.8706 - val_accuracy: 0.7833 Epoch 30/30 6/6 [==============================] - 5s 764ms/step - loss: 0.8522 - accuracy: 0.8069 - val_loss: 0.8866 - val_accuracy: 0.7667 8/8 [==============================] - 1s 62ms/step
({'dropout_rate': 0.3, 'l2_regularization': 0.001},
0.9422222222222222,
16,
{16: [{'dropout_rate': 0.3,
'l2_regularization': 0.001,
'accuracy': 0.9422222222222222},
{'dropout_rate': 0.3,
'l2_regularization': 0.01,
'accuracy': 0.9111111111111111},
{'dropout_rate': 0.3,
'l2_regularization': 0.1,
'accuracy': 0.8088888888888889},
{'dropout_rate': 0.5,
'l2_regularization': 0.001,
'accuracy': 0.9377777777777778},
{'dropout_rate': 0.5,
'l2_regularization': 0.01,
'accuracy': 0.9111111111111111},
{'dropout_rate': 0.5,
'l2_regularization': 0.1,
'accuracy': 0.7866666666666666},
{'dropout_rate': 0.7,
'l2_regularization': 0.001,
'accuracy': 0.9066666666666666},
{'dropout_rate': 0.7,
'l2_regularization': 0.01,
'accuracy': 0.8711111111111111},
{'dropout_rate': 0.7,
'l2_regularization': 0.1,
'accuracy': 0.8044444444444444}],
32: [{'dropout_rate': 0.3, 'l2_regularization': 0.001, 'accuracy': 0.88},
{'dropout_rate': 0.3, 'l2_regularization': 0.01, 'accuracy': 0.92},
{'dropout_rate': 0.3,
'l2_regularization': 0.1,
'accuracy': 0.8266666666666667},
{'dropout_rate': 0.5, 'l2_regularization': 0.001, 'accuracy': 0.92},
{'dropout_rate': 0.5,
'l2_regularization': 0.01,
'accuracy': 0.8755555555555555},
{'dropout_rate': 0.5,
'l2_regularization': 0.1,
'accuracy': 0.8177777777777778},
{'dropout_rate': 0.7,
'l2_regularization': 0.001,
'accuracy': 0.9244444444444444},
{'dropout_rate': 0.7,
'l2_regularization': 0.01,
'accuracy': 0.9066666666666666},
{'dropout_rate': 0.7,
'l2_regularization': 0.1,
'accuracy': 0.8177777777777778}],
64: [{'dropout_rate': 0.3,
'l2_regularization': 0.001,
'accuracy': 0.9244444444444444},
{'dropout_rate': 0.3,
'l2_regularization': 0.01,
'accuracy': 0.9111111111111111},
{'dropout_rate': 0.3,
'l2_regularization': 0.1,
'accuracy': 0.7955555555555556},
{'dropout_rate': 0.5,
'l2_regularization': 0.001,
'accuracy': 0.9066666666666666},
{'dropout_rate': 0.5,
'l2_regularization': 0.01,
'accuracy': 0.9111111111111111},
{'dropout_rate': 0.5,
'l2_regularization': 0.1,
'accuracy': 0.8577777777777778},
{'dropout_rate': 0.7,
'l2_regularization': 0.001,
'accuracy': 0.9155555555555556},
{'dropout_rate': 0.7,
'l2_regularization': 0.01,
'accuracy': 0.8444444444444444},
{'dropout_rate': 0.7,
'l2_regularization': 0.1,
'accuracy': 0.8044444444444444}],
128: [{'dropout_rate': 0.3,
'l2_regularization': 0.001,
'accuracy': 0.9244444444444444},
{'dropout_rate': 0.3,
'l2_regularization': 0.01,
'accuracy': 0.8977777777777778},
{'dropout_rate': 0.3,
'l2_regularization': 0.1,
'accuracy': 0.8622222222222222},
{'dropout_rate': 0.5,
'l2_regularization': 0.001,
'accuracy': 0.9066666666666666},
{'dropout_rate': 0.5,
'l2_regularization': 0.01,
'accuracy': 0.8488888888888889},
{'dropout_rate': 0.5,
'l2_regularization': 0.1,
'accuracy': 0.8266666666666667},
{'dropout_rate': 0.7,
'l2_regularization': 0.001,
'accuracy': 0.9066666666666666},
{'dropout_rate': 0.7,
'l2_regularization': 0.01,
'accuracy': 0.8888888888888888},
{'dropout_rate': 0.7,
'l2_regularization': 0.1,
'accuracy': 0.8088888888888889}]})
It appears that from the above hyperparameter tuning, the best performing combination of choices for each Batch Size is
Batch size 16: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9422222222222222
Batch size 32: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.88
Batch size 64: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9244444444444444
Batch size 128: {'dropout_rate': 0.3, 'l2_regularization': 0.001} - Accuracy: 0.9244444444444444
Throuout different the above four choices, it appears that the model performs the best when the dropout_rate is 0.3, l2_regularization is 0.001, and Batch Size=16. We have also concluded the optimal epoch size is 30.
import numpy as np
from sklearn.model_selection import train_test_split
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import GlobalAveragePooling2D, Dense, Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.regularizers import l2
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.models import Model, save_model
# Split the data into train and test sets
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.2, random_state=42)
num_labels = len(np.unique(df['label']))
y_train = np.eye(num_labels)[Y_train]
y_test = np.eye(num_labels)[Y_test]
y_val = np.eye(num_labels)[Y_val]
# Data augmentation
train_datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest'
)
train_datagen.fit(X_train)
# Initialize the base model
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))
for layer in base_model.layers:
layer.trainable = False
# Add custom layers on top of the base model
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(512, activation='relu', kernel_regularizer=l2(0.001))(x) # Adding L2 regularization
x = Dropout(0.3)(x) # Adding Dropout layer
predictions = Dense(num_labels, activation='softmax')(x)
optimal_model = Model(inputs=base_model.input, outputs=predictions)
# Compile the model
optimal_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Early stopping
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)
# Fit the model with augmented data
history = optimal_model.fit(
train_datagen.flow(X_train, y_train, batch_size=16),
epochs=30,
validation_data=(X_val, y_val),
callbacks=[early_stop]
)
# Evaluate the model on the test set
test_predictions = optimal_model.predict(X_test)
predicted_labels = np.argmax(test_predictions, axis=1)
accuracy = np.mean(predicted_labels == Y_test)
# Print the results
print("Accuracy: {:.2f}%".format(accuracy * 100))
Epoch 1/30 45/45 [==============================] - 7s 130ms/step - loss: 1.2766 - accuracy: 0.6222 - val_loss: 0.9571 - val_accuracy: 0.7222 Epoch 2/30 45/45 [==============================] - 4s 96ms/step - loss: 0.7708 - accuracy: 0.8056 - val_loss: 0.7299 - val_accuracy: 0.8000 Epoch 3/30 45/45 [==============================] - 6s 129ms/step - loss: 0.6254 - accuracy: 0.8486 - val_loss: 0.6422 - val_accuracy: 0.8111 Epoch 4/30 45/45 [==============================] - 4s 94ms/step - loss: 0.5251 - accuracy: 0.8861 - val_loss: 0.6167 - val_accuracy: 0.8500 Epoch 5/30 45/45 [==============================] - 5s 100ms/step - loss: 0.4878 - accuracy: 0.8875 - val_loss: 0.6280 - val_accuracy: 0.8056 Epoch 6/30 45/45 [==============================] - 6s 138ms/step - loss: 0.4785 - accuracy: 0.8833 - val_loss: 0.5714 - val_accuracy: 0.8667 Epoch 7/30 45/45 [==============================] - 4s 96ms/step - loss: 0.4533 - accuracy: 0.8903 - val_loss: 0.5247 - val_accuracy: 0.8833 Epoch 8/30 45/45 [==============================] - 5s 110ms/step - loss: 0.4181 - accuracy: 0.9111 - val_loss: 0.4904 - val_accuracy: 0.8889 Epoch 9/30 45/45 [==============================] - 5s 111ms/step - loss: 0.3890 - accuracy: 0.9111 - val_loss: 0.4652 - val_accuracy: 0.8889 Epoch 10/30 45/45 [==============================] - 5s 100ms/step - loss: 0.3589 - accuracy: 0.9222 - val_loss: 0.4653 - val_accuracy: 0.8833 Epoch 11/30 45/45 [==============================] - 6s 124ms/step - loss: 0.3705 - accuracy: 0.9194 - val_loss: 0.4573 - val_accuracy: 0.8611 Epoch 12/30 45/45 [==============================] - 4s 97ms/step - loss: 0.3622 - accuracy: 0.9194 - val_loss: 0.5108 - val_accuracy: 0.8556 Epoch 13/30 45/45 [==============================] - 6s 130ms/step - loss: 0.3609 - accuracy: 0.9250 - val_loss: 0.4681 - val_accuracy: 0.8778 Epoch 14/30 45/45 [==============================] - 5s 101ms/step - loss: 0.3690 - accuracy: 0.9111 - val_loss: 0.4430 - val_accuracy: 0.9000 Epoch 15/30 45/45 [==============================] - 4s 95ms/step - loss: 0.3249 - accuracy: 0.9347 - val_loss: 0.4489 - val_accuracy: 0.9056 Epoch 16/30 45/45 [==============================] - 7s 149ms/step - loss: 0.3250 - accuracy: 0.9167 - val_loss: 0.4686 - val_accuracy: 0.8778 Epoch 17/30 45/45 [==============================] - 5s 103ms/step - loss: 0.3109 - accuracy: 0.9194 - val_loss: 0.4663 - val_accuracy: 0.8500 8/8 [==============================] - 1s 60ms/step Accuracy: 93.78%
#plot the structure of the optimal model
plot_model(optimal_model,to_file="optimalVGG16.png",show_shapes=True,show_layer_names=True)
Image(filename="optimalVGG16.png")
# Save the model
optimal_model.save('/content/drive/MyDrive/vgg16_model.h5')
print("The model has been saved")
The model has been saved
#test if the same model can be reloaded
reloaded_model = tf.keras.models.load_model('/content/drive/MyDrive/vgg16_model.h5')
print("The model has been reloaded")
The model has been reloaded
The main objective of this project is to identify an optimal model for weather image classification, incorporating useful techniques. These techniques include but are not limited to regularization, data augmentation, and early stopping. By utilizing these techniques, the project aims to save computational resources by determining the optimal combination of epochs and batch size that accurately reflects the model's prediction capabilities.
It is important to note that there are various options available for modeling structures and regularization techniques, and it is highly recommended to explore and implement different choices. However, based on the specific dataset provided for this project, it can be reasonably concluded that transfer learning models from the VGG16 model, along with appropriate regularization techniques, are sufficient to generate reasonable predictions. These models exhibit decent values of loss and accuracy when evaluated on the testing, training, and validation datasets.